diff options
-rw-r--r-- | data/global.pl | 34 | ||||
-rw-r--r-- | lib/Multi/API.pm | 4 | ||||
-rw-r--r-- | lib/VN3/ElmGen.pm | 6 | ||||
-rw-r--r-- | lib/VN3/Release/Edit.pm | 2 | ||||
-rw-r--r-- | lib/VN3/Types.pm | 50 | ||||
-rw-r--r-- | lib/VN3/Validation.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/Func.pm | 6 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 10 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNPage.pm | 8 | ||||
-rw-r--r-- | lib/VNDB/Types.pm | 64 | ||||
-rw-r--r-- | lib/VNDB/Util/Misc.pm | 3 | ||||
-rwxr-xr-x | util/jsgen.pl | 14 |
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 ], |