summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2014-07-18 09:36:46 +0200
committerYorhel <git@yorhel.nl>2014-07-18 09:36:46 +0200
commit920226b34235bf79aa719fbb7519bf8532de85c3 (patch)
treec5e1824451fcbf98e5e88f903cc63034e7bc3367
parent578d8e9ced5511e7165216296113fcd837037ee7 (diff)
API: Add firstchar filter to get vn
-rw-r--r--data/docs/1120
-rw-r--r--lib/Multi/API.pm3
2 files changed, 19 insertions, 4 deletions
diff --git a/data/docs/11 b/data/docs/11
index 57443b8b..bef538d5 100644
--- a/data/docs/11
+++ b/data/docs/11
@@ -543,6 +543,17 @@ however still required.<br />
<td>&nbsp;</td>
</tr>
<tr>
+ <td>firstchar</td>
+ <td>null<br />string</td>
+ <td>= !=<br />= !=</td>
+ <td>
+ Filter by the first character of the title, similar to the
+ <a href="http://vndb.org/v/all">VN browser interface</a>. The character
+ must either be a lowercase 'a' to 'z', or null to match all titles not
+ starting with an alphabetic character.
+ </td>
+ </tr>
+ <tr class="odd">
<td>released</td>
<td>null<br />date (string)</td>
<td>= !=<br />= != &gt; &gt;= &lt; &lt;=</td>
@@ -551,25 +562,25 @@ however still required.<br />
you want, use ranges instead, e.g. (released &gt; "2008" and released &lt;= "2009").
</td>
</tr>
- <tr class="odd">
+ <tr>
<td>platforms</td>
<td>null<br />string<br />array of strings</td>
<td><br />= !=</td>
<td>&nbsp;</td>
</tr>
- <tr>
+ <tr class="odd">
<td>languages</td>
<td>null<br />string<br />array of strings</td>
<td><br />= !=</td>
<td>&nbsp;</td>
</tr>
- <tr class="odd">
+ <tr>
<td>orig_lang</td>
<td>string<br />array of strings</td>
<td>= !=</td>
<td>&nbsp;</td>
</tr>
- <tr>
+ <tr class="odd">
<td>search</td>
<td>string</td>
<td>~</td>
@@ -1453,6 +1464,7 @@ however still required.<br />
<li>New error id: 'settype'</li>
<li>Added "tags" flag and member to "get vn"</li>
<li>Added "stats" flag to "get vn"</li>
+ <li>Added "firstchar" filter to "get vn"</li>
</ul>
<b>2.15</b>
<ul>
diff --git a/lib/Multi/API.pm b/lib/Multi/API.pm
index b1b15d63..365d7ec0 100644
--- a/lib/Multi/API.pm
+++ b/lib/Multi/API.pm
@@ -507,6 +507,9 @@ sub get_vn {
[ undef, "vr.original :op: ''", {qw|= = != <>|} ],
[ str => 'vr.original :op: :value:', {qw|= = != <>|} ],
[ str => 'vr.original ILIKE :value:', {'~',1}, process => \'like' ]
+ ], [ 'firstchar',
+ [ undef, '(:op: ((ASCII(vr.title) < 97 OR ASCII(vr.title) > 122) AND (ASCII(vr.title) < 65 OR ASCII(vr.title) > 90)))', {'=', '', '!=', 'NOT'} ],
+ [ str => 'LOWER(SUBSTR(vr.title, 1, 1)) :op: :value:' => {qw|= = != <>|}, process => sub { shift =~ /^([a-z])$/ ? $1 : \'Invalid character' } ],
], [ 'released',
[ undef, 'v.c_released :op: 0', {qw|= = != <>|} ],
[ str => 'v.c_released :op: :value:', {qw|= = != <> > > < < <= <= >= >=|}, process => \&parsedate ],