charset: skip empty petscii rows
[sheet.git] / charset.plp
index c924d5e8a19feb48fcd7682e23caa7bcf42b0e08..49f2d504e12dbfe145f44b7246fb0f99919c337d 100644 (file)
@@ -14,7 +14,7 @@ Html({
                charset codepage unicode ascii utf8 latin glyph character encoding
                reference common overview table
        '],
-       stylesheet => [qw'light'],
+       (stylesheet => [qw'light']) x !$mode,
        data => [qw(
                charset-encoding.inc.pl
                charset-unicode.inc.pl charset-ucplanes.inc.pl charset-utf8.inc.pl
@@ -55,6 +55,7 @@ print join " •\n", (
                dos      => 'DOS',
                mac      => 'Apple',
                ebcdic   => 'EBCDIC',
+               legacy   => 'legacy',
                $tablist[0] eq 'default' ? () : ('' => 'common'),
        ],
        [
@@ -131,7 +132,7 @@ sub tabinput {
                                # extend earlier range
                                my $skip = int(($row{endpoint} || $row{startpoint}) / $row{cols});
                                for ($skip + 1 .. (hex($+{start}) / $row{cols}) - 1) {
-                                       $row{skip}->{ $_ * $row{cols} - $row{startpoint} }++;
+                                       $row{skip}->{ $_ * $row{cols} }++;
                                }
                        }
                        else {
@@ -153,7 +154,7 @@ sub tabinput {
        if (defined $row{table} or defined $row{cell}) {
                $row{set} //= $input;
        }
-       elsif ($row{set} = Encode::resolve_alias($input)) {
+       elsif ($row{set} = Encode::resolve_alias($charset->{set} // $input)) {
                $row{offset} = delete $row{startpoint};
                if ($charset->{varchar}) {
                        # array of possibly multiple characters per code point
@@ -169,6 +170,7 @@ sub tabinput {
 
                $row{endpoint} -= $row{offset};
                $visible->{ascii}++;  # assume common base
+               $row{set} = $input if $charset->{set};  # base override
        }
        else {
                Alert("Encoding <q>$input</q> unknown");
@@ -301,13 +303,13 @@ for my $row (@request) {
 
        print '<tbody>';
        while ($offset <= $row->{endpoint} * $colsize) {
-               if ($row->{skip}->{$offset}) {
+               if ($row->{skip}->{$offset + $row->{offset}}) {
                        $offset += $cols * $colsize;
                        next;
                }
 
                print '<tr><th>';
-               if (defined $row->{skip}->{$offset}) {
+               if (defined $row->{skip}->{$offset + $row->{offset}}) {
                        print '⋮';
                }
                else {
@@ -347,7 +349,7 @@ for my $row (@request) {
                                $visible->{$glyph}++;
                        }
 
-                       print '<td title="%s"', $name;
+                       printf '<td title="%s"', $name;
                        say $class ? sprintf(' class="X %s">%s', $class, $cell) : '>';
                }
                continue {