summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/global.pl34
-rw-r--r--lib/Multi/API.pm4
-rw-r--r--lib/VN3/ElmGen.pm6
-rw-r--r--lib/VN3/Release/Edit.pm2
-rw-r--r--lib/VN3/Types.pm50
-rw-r--r--lib/VN3/Validation.pm4
-rw-r--r--lib/VNDB/Func.pm6
-rw-r--r--lib/VNDB/Handler/Releases.pm10
-rw-r--r--lib/VNDB/Handler/VNPage.pm8
-rw-r--r--lib/VNDB/Types.pm64
-rw-r--r--lib/VNDB/Util/Misc.pm3
-rwxr-xr-xutil/jsgen.pl14
12 files changed, 86 insertions, 119 deletions
diff --git a/data/global.pl b/data/global.pl
index 1b0834a8..80051235 100644
--- a/data/global.pl
+++ b/data/global.pl
@@ -49,40 +49,6 @@ our %S;
default_perm => 1+4+16, # Keep synchronised with the default value of users.perm
default_tags_cat=> 'cont,tech',
board_edit_time => 7*24*3600,
- media => ordhash(
- #DB qty txt plural (if qty) icon
- cd => [ 1, 'CD', 'CDs', 'disk' ],
- dvd => [ 1, 'DVD', 'DVDs', 'disk' ],
- gdr => [ 1, 'GD-ROM', 'GD-ROMs', 'disk' ],
- blr => [ 1, 'Blu-ray disc', 'Blu-ray discs', 'disk' ],
- flp => [ 1, 'Floppy', 'Floppies', 'cartridge'],
- mrt => [ 1, 'Cartridge', 'Cartridges', 'cartridge'],
- mem => [ 1, 'Memory card', 'Memory cards', 'cartridge'],
- umd => [ 1, 'UMD', 'UMDs', 'disk' ],
- nod => [ 1, 'Nintendo Optical Disc', 'Nintendo Optical Discs', 'disk' ],
- in => [ 0, 'Internet download', '', 'download' ],
- otc => [ 0, 'Other', '', 'cartridge'],
- ),
- resolutions => ordhash(
- unknown => [ 'Unknown / console / handheld', '' ], # hardcoded in many places
- nonstandard => [ 'Non-standard', '' ], # hardcoded in VNPage.pm
- '640x480' => [ '640x480', '4:3' ],
- '800x600' => [ '800x600', '4:3' ],
- '1024x768' => [ '1024x768', '4:3' ],
- '1280x960' => [ '1280x960', '4:3' ],
- '1600x1200' => [ '1600x1200', '4:3' ],
- '640x400' => [ '640x400', 'widescreen' ],
- '960x600' => [ '960x600', 'widescreen' ],
- '960x640' => [ '960x640', 'widescreen' ],
- '1024x576' => [ '1024x576', 'widescreen' ],
- '1024x600' => [ '1024x600', 'widescreen' ],
- '1024x640' => [ '1024x640', 'widescreen' ],
- '1280x720' => [ '1280x720', 'widescreen' ],
- '1280x800' => [ '1280x800', 'widescreen' ],
- '1366x768' => [ '1366x768', 'widescreen' ],
- '1600x900' => [ '1600x900', 'widescreen' ],
- '1920x1080' => [ '1920x1080', 'widescreen' ],
- ),
atom_feeds => { # num_entries, title, id
announcements => [ 10, 'VNDB Site Announcements', '/t/an' ],
changes => [ 25, 'VNDB Recent Changes', '/hist' ],
diff --git a/lib/Multi/API.pm b/lib/Multi/API.pm
index 73d0425c..a93cd3ff 100644
--- a/lib/Multi/API.pm
+++ b/lib/Multi/API.pm
@@ -606,7 +606,7 @@ my %GET_RELEASE = (
$_[0]{minage} = $_[0]{minage} < 0 ? undef : $_[0]{minage}*1;
$_[0]{gtin} ||= undef;
$_[0]{catalog} ||= undef;
- $_[0]{resolution} = $_[0]{resolution} eq 'unknown' ? undef : $VNDB::S{resolutions}{ $_[0]{resolution} }[0];
+ $_[0]{resolution} = $_[0]{resolution} eq 'unknown' ? undef : $RESOLUTION{ $_[0]{resolution} }{txt};
$_[0]{voiced} = $_[0]{voiced} ? $_[0]{voiced}*1 : undef;
$_[0]{animation} = [
$_[0]{ani_story} ? $_[0]{ani_story}*1 : undef,
@@ -629,7 +629,7 @@ my %GET_RELEASE = (
}
for (@$r) {
delete $_->{id};
- $_->{qty} = $VNDB::S{media}{$_->{medium}}[0] ? $_->{qty}*1 : undef;
+ $_->{qty} = $MEDIUM{$_->{medium}}{qty} ? $_->{qty}*1 : undef;
}
} ],
]
diff --git a/lib/VN3/ElmGen.pm b/lib/VN3/ElmGen.pm
index 900f40c9..c3d12ed9 100644
--- a/lib/VN3/ElmGen.pm
+++ b/lib/VN3/ElmGen.pm
@@ -175,7 +175,7 @@ def platforms => 'List (String, String)' => list map tuple(string $_, st
def releaseTypes => 'List String' => list map string($_), release_types;
def producerTypes => 'List (String, String)' => list map tuple(string $_, string $PRODUCER_TYPE{$_}), keys %PRODUCER_TYPE;
def minAges => 'List (Int, String)' => list map tuple($_, string minage_display_full $_), keys %AGE_RATING;
-def resolutions => 'List (String, String)' => list map tuple(string $_, string resolution_display_full $_), keys %RESOLUTIONS;
+def resolutions => 'List (String, String)' => list map tuple(string $_, string resolution_display_full $_), keys %RESOLUTION;
def voiced => 'List (Int, String)' => list map tuple($_, string($VOICED{$_})), keys %VOICED;
def animated => 'List (Int, String)' => list map tuple($_, string($ANIMATED{$_})), keys %ANIMATED;
def genders => 'List (String, String)' => list map tuple(string $_, string gender_display $_), keys %GENDER;
@@ -190,8 +190,8 @@ def vnvotePattern => String => string { tuwf->compile({ vnv
def media => 'List (String, Medium)' =>
list map tuple(
string($_),
- sprintf('{ qty = %s, single = %s, plural = %s }', bool($MEDIA{$_}{qty}), string($MEDIA{$_}{single}), string($MEDIA{$_}{plural}))
- ), keys %MEDIA;
+ sprintf('{ qty = %s, single = %s, plural = %s }', bool($MEDIUM{$_}{qty}), string($MEDIUM{$_}{txt}), string($MEDIUM{$_}{plural}))
+ ), keys %MEDIUM;
1;
diff --git a/lib/VN3/Release/Edit.pm b/lib/VN3/Release/Edit.pm
index d552fa9b..030c0711 100644
--- a/lib/VN3/Release/Edit.pm
+++ b/lib/VN3/Release/Edit.pm
@@ -112,7 +112,7 @@ json_api qr{/(?:$RID_RE/edit|r/add)}, $FORM_IN, sub {
$data->{doujin} = $data->{voiced} = $data->{ani_story} = $data->{ani_ero} = 0 if $data->{patch};
$data->{resolution} = 'unknown' if $data->{patch};
$data->{uncensored} = 0 if !$data->{minage} || $data->{minage} != 18;
- $_->{qty} = $MEDIA{$_->{medium}}{qty} ? $_->{qty}||1 : 0 for @{$data->{media}};
+ $_->{qty} = $MEDIUM{$_->{medium}}{qty} ? $_->{qty}||1 : 0 for @{$data->{media}};
validate_dbid 'SELECT id FROM vn WHERE id IN', map $_->{vid}, @{$data->{vn}};
validate_dbid 'SELECT id FROM producers WHERE id IN', map $_->{pid}, @{$data->{producers}};
diff --git a/lib/VN3/Types.pm b/lib/VN3/Types.pm
index f50f417c..15b23010 100644
--- a/lib/VN3/Types.pm
+++ b/lib/VN3/Types.pm
@@ -16,7 +16,7 @@ our @EXPORT = qw/
$VREV_RE $RREV_RE $PREV_RE $SREV_RE $CREV_RE $DREV_RE
Lang
Platform
- %MEDIA media_display
+ media_display
ReleaseDate
@VN_LENGTHS vn_length_time vn_length_display
char_roles char_role_display
@@ -27,7 +27,7 @@ our @EXPORT = qw/
spoil_display
release_types
minage_display minage_display_full
- %RESOLUTIONS resolution_display_full
+ resolution_display_full
gender_display gender_icon
blood_type_display
/;
@@ -63,27 +63,11 @@ sub Platform {
}
-
-# The 'unk' medium is reserved for "unknown" in release filters.
-our %MEDIA;
-tie %MEDIA, 'Tie::IxHash',
- cd => { qty => 1, single => 'CD', plural => 'CDs', },
- dvd => { qty => 1, single => 'DVD', plural => 'DVDs', },
- gdr => { qty => 1, single => 'GD-ROM', plural => 'GD-ROMs', },
- blr => { qty => 1, single => 'Blu-ray disc', plural => 'Blu-ray discs', },
- flp => { qty => 1, single => 'Floppy', plural => 'Floppies', },
- mrt => { qty => 1, single => 'Cartridge', plural => 'Cartridges', },
- mem => { qty => 1, single => 'Memory card', plural => 'Memory cards', },
- umd => { qty => 1, single => 'UMD', plural => 'UMDs', },
- nod => { qty => 1, single => 'Nintendo Optical Disc', plural => 'Nintendo Optical Discs' },
- in => { qty => 0, single => 'Internet download', plural => '', },
- otc => { qty => 0, single => 'Other', plural => '', };
-
sub media_display {
my($media, $qty) = @_;
- my $med = $MEDIA{$media};
- return $med->{single} if !$med->{qty};
- sprintf '%d %s', $qty, $qty == 1 ? $med->{single} : $med->{plural};
+ my $med = $MEDIUM{$media};
+ return $med->{txt} if !$med->{qty};
+ sprintf '%d %s', $qty, $qty == 1 ? $med->{txt} : $med->{plural};
}
@@ -187,29 +171,7 @@ sub minage_display_full { my $e = $AGE_RATING{$_[0]}; $e->{txt}.($e->{ex} ? " (e
-our %RESOLUTIONS;
-tie %RESOLUTIONS, 'Tie::IxHash',
- # DB # Display # Category
- unknown => [ 'Unknown / console / handheld', '' ],
- nonstandard => [ 'Non-standard', '' ],
- '640x480' => [ '640x480', '4:3' ],
- '800x600' => [ '800x600', '4:3' ],
- '1024x768' => [ '1024x768', '4:3' ],
- '1280x960' => [ '1280x960', '4:3' ],
- '1600x1200' => [ '1600x1200', '4:3' ],
- '640x400' => [ '640x400', 'widescreen' ],
- '960x600' => [ '960x600', 'widescreen' ],
- '960x640' => [ '960x640', 'widescreen' ],
- '1024x576' => [ '1024x576', 'widescreen' ],
- '1024x600' => [ '1024x600', 'widescreen' ],
- '1024x640' => [ '1024x640', 'widescreen' ],
- '1280x720' => [ '1280x720', 'widescreen' ],
- '1280x800' => [ '1280x800', 'widescreen' ],
- '1366x768' => [ '1366x768', 'widescreen' ],
- '1600x900' => [ '1600x900', 'widescreen' ],
- '1920x1080' => [ '1920x1080', 'widescreen' ];
-
-sub resolution_display_full { my $e = $RESOLUTIONS{$_[0]}; ($e->[1] ? ucfirst "$e->[1]: " : '').$e->[0] }
+sub resolution_display_full { my $e = $RESOLUTION{$_[0]}; ($e->{cat} ? ucfirst "$e->{cat}: " : '').$e->{txt} }
sub gender_display { $GENDER{$_[0]} }
diff --git a/lib/VN3/Validation.pm b/lib/VN3/Validation.pm
index ab4214a9..844ff49f 100644
--- a/lib/VN3/Validation.pm
+++ b/lib/VN3/Validation.pm
@@ -30,8 +30,8 @@ TUWF::set custom_validations => {
char_role => { enum => \%CHAR_ROLE },
language => { enum => \%LANGUAGE },
platform => { enum => \%PLATFORM },
- medium => { enum => \%MEDIA },
- resolution => { enum => \%RESOLUTIONS },
+ medium => { enum => \%MEDIUM },
+ resolution => { enum => \%RESOLUTION },
gender => { enum => \%GENDER },
blood_type => { enum => \%BLOOD_TYPE },
gtin => { uint => 1, func => sub { $_[0] eq 0 || gtintype($_[0]) } },
diff --git a/lib/VNDB/Func.pm b/lib/VNDB/Func.pm
index a4e6423e..25738970 100644
--- a/lib/VNDB/Func.pm
+++ b/lib/VNDB/Func.pm
@@ -197,10 +197,10 @@ sub fmtvote {
# Formats a media string ("1 CD", "2 CDs", "Internet download", etc)
sub fmtmedia {
my($med, $qty) = @_;
- $med = $TUWF::OBJ->{media}{$med};
+ $med = $MEDIUM{$med};
join ' ',
- ($med->[0] ? ($qty) : ()),
- $med->[ $med->[0] && $qty > 1 ? 2 : 1 ];
+ ($med->{qty} ? ($qty) : ()),
+ $med->{ $med->{qty} && $qty > 1 ? 'plural' : 'txt' };
}
# Formats a VN length (xtra = 1 for time indication, 2 for examples)
diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm
index a6b896f1..df7dbaaa 100644
--- a/lib/VNDB/Handler/Releases.pm
+++ b/lib/VNDB/Handler/Releases.pm
@@ -85,7 +85,7 @@ sub page {
[ notes => 'Notes', diff => qr/[ ,\n\.]/ ],
[ platforms => 'Platforms', join => ', ', split => sub { map $PLATFORM{$_}, @{$_[0]} } ],
[ media => 'Media', join => ', ', split => sub { map fmtmedia($_->{medium}, $_->{qty}), @{$_[0]} } ],
- [ resolution => 'Resolution', serialize => sub { $self->{resolutions}{$_[0]}[0]; } ],
+ [ resolution => 'Resolution', serialize => sub { $RESOLUTION{$_[0]}{txt}; } ],
[ voiced => 'Voiced', serialize => sub { $VOICED{$_[0]}{txt} } ],
[ ani_story => 'Story animation', serialize => sub { $ANIMATED{$_[0]}{txt} } ],
[ ani_ero => 'Ero animation', serialize => sub { $ANIMATED{$_[0]}{txt} } ],
@@ -191,7 +191,7 @@ sub _infotable {
if($r->{resolution} ne 'unknown') {
Tr;
td 'Resolution';
- td $self->{resolutions}{$r->{resolution}}[0];
+ td $RESOLUTION{$r->{resolution}}{txt};
end;
}
@@ -385,7 +385,7 @@ sub edit {
{ post => 'notes', required => 0, default => '', maxlength => 10240 },
{ post => 'platforms', required => 0, default => '', multi => 1, enum => [ keys %PLATFORM ] },
{ post => 'media', required => 0, default => '' },
- { post => 'resolution',required => 0, default => 0, enum => [ keys %{$self->{resolutions}} ] },
+ { post => 'resolution',required => 0, default => 0, enum => [ keys %RESOLUTION ] },
{ post => 'voiced', required => 0, default => 0, enum => [ keys %VOICED ] },
{ post => 'ani_story', required => 0, default => 0, enum => [ keys %ANIMATED ] },
{ post => 'ani_ero', required => 0, default => 0, enum => [ keys %ANIMATED ] },
@@ -525,7 +525,7 @@ sub _form {
rel_format => [ 'Format',
[ select => short => 'resolution', name => 'Resolution', options => [
- map [ $_, @{$self->{resolutions}{$_}} ], keys %{$self->{resolutions}} ] ],
+ map [ $_, $RESOLUTION{$_}{txt}, $RESOLUTION{$_}{cat} ], keys %RESOLUTION ] ],
[ static => label => 'Engine', content => sub {
my $other = $frm->{engine} && !grep($_ eq $frm->{engine}, @{$self->{engines}});
Select name => 'engine', id => 'engine', tabindex => 10;
@@ -715,7 +715,7 @@ sub _fil_compat {
my $f = $self->formValidate(
{ get => 'ln', required => 0, multi => 1, default => '', enum => [ keys %LANGUAGE ] },
{ get => 'pl', required => 0, multi => 1, default => '', enum => [ keys %PLATFORM ] },
- { get => 'me', required => 0, multi => 1, default => '', enum => [ keys %{$self->{media}} ] },
+ { get => 'me', required => 0, multi => 1, default => '', enum => [ keys %MEDIUM ] },
{ get => 'tp', required => 0, default => '', enum => [ '', keys %RELEASE_TYPE ] },
{ get => 'pa', required => 0, default => 0, enum => [ 0..2 ] },
{ get => 'fw', required => 0, default => 0, enum => [ 0..2 ] },
diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm
index 01c14bce..13a30b16 100644
--- a/lib/VNDB/Handler/VNPage.pm
+++ b/lib/VNDB/Handler/VNPage.pm
@@ -127,7 +127,7 @@ my @rel_cols = (
what => 'extended',
has_data => sub { $_[0]{resolution} ne 'unknown' },
draw => sub {
- txt $_[0]{resolution} eq 'unknown' ? 'Unknown' : $TUWF::OBJ->{resolutions}{$_[0]{resolution}}[0];
+ txt $_[0]{resolution} eq 'unknown' ? 'Unknown' : $RESOLUTION{$_[0]{resolution}}{txt};
},
}, { # Voiced
id => 'voi',
@@ -885,15 +885,15 @@ sub _release_icons {
# Resolution column
my $resolution = $rel->{resolution};
if($resolution ne 'unknown') {
- my $resolution_type = $resolution eq 'nonstandard' ? 'custom' : $self->{resolutions}{$resolution}[1] eq 'widescreen' ? '16-9' : '4-3';
+ my $resolution_type = $resolution eq 'nonstandard' ? 'custom' : $RESOLUTION{$resolution}{cat} eq 'widescreen' ? '16-9' : '4-3';
# Ugly workaround: PC-98 has non-square pixels, thus not widescreen
$resolution_type = '4-3' if $resolution_type eq '16-9' && grep $_ eq 'p98', @{$rel->{platforms}};
- _release_icon "res$resolution_type", $self->{resolutions}{$resolution}[0], "resolution_$resolution_type";
+ _release_icon "res$resolution_type", $RESOLUTION{$resolution}{txt}, "resolution_$resolution_type";
}
# Media column
if(@{$rel->{media}}) {
- my $icon = $self->{media}{ $rel->{media}[0]{medium} }[3];
+ my $icon = $MEDIUM{ $rel->{media}[0]{medium} }{icon};
my $media_detail = join ', ', map fmtmedia($_->{medium}, $_->{qty}), @{$rel->{media}};
_release_icon $icon, $media_detail, $icon;
}
diff --git a/lib/VNDB/Types.pm b/lib/VNDB/Types.pm
index 108c0c5b..0a233b8e 100644
--- a/lib/VNDB/Types.pm
+++ b/lib/VNDB/Types.pm
@@ -7,25 +7,12 @@ use Exporter 'import';
use Tie::IxHash;
our @EXPORT;
-
sub hash {
my $name = shift;
tie $name->%*, 'Tie::IxHash', @_;
push @EXPORT, "%$name";
}
-sub array {
- my $name = shift;
- $name->@* = @_;
- push @EXPORT, "\@$name";
-}
-
-sub fun($&) {
- my($name, $code) = @_;
- *$name = $code;
- push @EXPORT, $name;
-}
-
# SQL: ENUM language
@@ -227,6 +214,46 @@ hash AGE_RATING =>
+# SQL: ENUM medium
+# The 'unk' medium is used in release filters to mean "unknown".
+hash MEDIUM =>
+ cd => { qty => 1, txt => 'CD', plural => 'CDs', icon => 'disk' },
+ dvd => { qty => 1, txt => 'DVD', plural => 'DVDs', icon => 'disk' },
+ gdr => { qty => 1, txt => 'GD-ROM', plural => 'GD-ROMs', icon => 'disk' },
+ blr => { qty => 1, txt => 'Blu-ray disc', plural => 'Blu-ray discs', icon => 'disk' },
+ flp => { qty => 1, txt => 'Floppy', plural => 'Floppies', icon => 'cartridge' },
+ mrt => { qty => 1, txt => 'Cartridge', plural => 'Cartridges', icon => 'cartridge' },
+ mem => { qty => 1, txt => 'Memory card', plural => 'Memory cards', icon => 'cartridge' },
+ umd => { qty => 1, txt => 'UMD', plural => 'UMDs', icon => 'disk' },
+ nod => { qty => 1, txt => 'Nintendo Optical Disc', plural => 'Nintendo Optical Discs', icon => 'disk' },
+ in => { qty => 0, txt => 'Internet download', plural => '', icon => 'download' },
+ otc => { qty => 0, txt => 'Other', plural => '', icon => 'cartridge' };
+
+
+
+# SQL: ENUM resolution
+hash RESOLUTION =>
+ unknown => { txt => 'Unknown / console / handheld', cat => '' }, # hardcoded in many places
+ nonstandard => { txt => 'Non-standard', cat => '' }, # hardcoded in VNPage.pm
+ '640x480' => { txt => '640x480', cat => '4:3' },
+ '800x600' => { txt => '800x600', cat => '4:3' },
+ '1024x768' => { txt => '1024x768', cat => '4:3' },
+ '1280x960' => { txt => '1280x960', cat => '4:3' },
+ '1600x1200' => { txt => '1600x1200', cat => '4:3' },
+ '640x400' => { txt => '640x400', cat => 'widescreen' },
+ '960x600' => { txt => '960x600', cat => 'widescreen' },
+ '960x640' => { txt => '960x640', cat => 'widescreen' },
+ '1024x576' => { txt => '1024x576', cat => 'widescreen' },
+ '1024x600' => { txt => '1024x600', cat => 'widescreen' },
+ '1024x640' => { txt => '1024x640', cat => 'widescreen' },
+ '1280x720' => { txt => '1280x720', cat => 'widescreen' },
+ '1280x800' => { txt => '1280x800', cat => 'widescreen' },
+ '1366x768' => { txt => '1366x768', cat => 'widescreen' },
+ '1600x900' => { txt => '1600x900', cat => 'widescreen' },
+ '1920x1080' => { txt => '1920x1080', cat => 'widescreen' };
+
+
+
# SQL: ENUM release_type
hash RELEASE_TYPE =>
complete => 'Complete',
@@ -241,6 +268,8 @@ hash WISHLIST_STATUS =>
2 => 'Low',
3 => 'Blacklist';
+
+
# 0 = hardcoded "unknown", 2 = hardcoded 'OK'
hash RLIST_STATUS =>
0 => 'Unknown',
@@ -249,6 +278,8 @@ hash RLIST_STATUS =>
3 => 'On loan',
4 => 'Deleted';
+
+
hash VNLIST_STATUS =>
0 => 'Unknown',
1 => 'Playing',
@@ -257,6 +288,7 @@ hash VNLIST_STATUS =>
4 => 'Dropped';
+
# SQL: ENUM board_type
hash BOARD_TYPE =>
an => { txt => 'Announcements', post_perm => 'boardmod', index_rows => 5, dbitem => 0 },
@@ -276,6 +308,8 @@ hash BLOOD_TYPE =>
b => 'B',
ab => 'AB';
+
+
# SQL: ENUM gender
hash GENDER =>
unknown => 'Unknown or N/A',
@@ -283,9 +317,13 @@ hash GENDER =>
f => 'Female',
b => 'Both';
+
+
# SQL: ENUM char_role
hash CHAR_ROLE =>
main => { txt => 'Protagonist', plural => 'Protagonists' },
primary => { txt => 'Main character', plural => 'Main characters' },
side => { txt => 'Side character', plural => 'Side characters' },
appears => { txt => 'Makes an appearance', plural => 'Make an appearance' };
+
+1;
diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm
index 6e815bbd..9cfb8210 100644
--- a/lib/VNDB/Util/Misc.pm
+++ b/lib/VNDB/Util/Misc.pm
@@ -6,6 +6,7 @@ use warnings;
use Exporter 'import';
use TUWF ':html';
use VNDB::Func;
+use VNDB::Types;
use VNDB::BBCode ();
our @EXPORT = qw|filFetchDB filCompat bbSubstLinks entryLinks|;
@@ -102,7 +103,7 @@ sub filCompat {
$fil->{resolution} = [ map {
if(/^[0-9]+$/) {
$mod++;
- (keys %{$self->{resolutions}})[$_] || 'unknown'
+ (keys %RESOLUTION)[$_] || 'unknown'
} else { $_ }
} ref $fil->{resolution} ? @{$fil->{resolution}} : $fil->{resolution} ];
}
diff --git a/util/jsgen.pl b/util/jsgen.pl
index 09be62e0..146ea680 100755
--- a/util/jsgen.pl
+++ b/util/jsgen.pl
@@ -21,14 +21,14 @@ sub resolutions {
my $cat = '';
my @r;
my $push = \@r;
- for my $i (keys %{$S{resolutions}}) {
- my $r = $S{resolutions}{$i};
- if($cat ne $r->[1]) {
- push @r, [$r->[1]];
- $cat = $r->[1];
+ for my $i (keys %RESOLUTION) {
+ my $r = $RESOLUTION{$i};
+ if($cat ne $r->{cat}) {
+ push @r, [$r->{cat}];
+ $cat = $r->{cat};
$push = $r[$#r];
}
- push @$push, [$i, $r->[0]];
+ push @$push, [$i, $r->{txt}];
}
\@r
}
@@ -42,7 +42,7 @@ sub vars {
languages => [ map [ $_, $LANGUAGE{$_} ], keys %LANGUAGE ],
platforms => [ map [ $_, $PLATFORM{$_} ], keys %PLATFORM ],
char_roles => [ map [ $_, $CHAR_ROLE{$_}{txt} ], keys %CHAR_ROLE ],
- media => [ map [ $_, $S{media}{$_}[1], $S{media}{$_}[0] ], keys %{$S{media}} ],
+ media => [ map [ $_, $MEDIUM{$_}{txt}, $MEDIUM{$_}{qty} ], keys %MEDIUM ],
release_types => [ map [ $_, $RELEASE_TYPE{$_} ], keys %RELEASE_TYPE ],
animated => [ map [ $_, $ANIMATED{$_}{txt} ], keys %ANIMATED ],
voiced => [ map [ $_, $VOICED{$_}{txt} ], keys %VOICED ],