writing: ordered list references to named rows
[sheet.git] / writing.plp
index fc0a923112dbf0f9e9058ffd5a6a70bfd8b9c875..2c67ae058fc7ac5384884ad821b40d26f57b28c6 100644 (file)
@@ -35,7 +35,7 @@ unless (exists $get{v}) {
        $glyphs->{style} = 'univer';
 }
 
-my $scriptname = do 'writing-script.inc.pl';
+my $scriptname = eval { Data('writing-script') }; # optional translations
 $_ = showlink($_, "/latin") for $scriptname->{latn} || ();
 
 for (
@@ -43,17 +43,20 @@ for (
        [brah => 'Brahmi'],
 ) {
        my ($source, $title) = @$_;
-       my @table = do "writing-$source.inc.pl";
-       if ($! or $@) {
+       my $info = eval { Data("writing-$source") } or do {
                say "<h2>$title</h2>";
-               printf "<p>Table data not found: <em>%s</em>.</p>\n", $@ || $!;
+               printf "<p>%s: <em>%s</em>.</p>\n", @{$@};
                next;
-       }
+       };
+       my $rows = $info->{list} or next;
        $glyphs->print($title => [map {
+               my $ref = $_;
                my $lead = s/^(-)// && $1;
-               ref $_ eq 'ARRAY' ? @$_ : map { ".>$lead$_" }
+               (map { ".>$lead$_" }
                        $scriptname->{$source.'_'.$_} || $scriptname->{$_} || $_
-       } @table]);
+               ),
+               @{ $info->{table}->{$ref} || [] }
+       } @{$rows}]);
 }
 
 say "</div>\n";