common: bump version to 1.11
[sheet.git] / charset.plp
index 6300622f3ea16088b40c6aee93c63a96f93ec1b2..f9c50d87616715b9d304f6a16e06f4a8a8dc3f89 100644 (file)
@@ -5,7 +5,7 @@ my @tablist = split m{/+}, $Request || 'default';
 
 Html({
        title => 'charset cheat sheet',
-       version => '1.0',
+       version => '1.2',
        description => [
                "Reference sheet with all glyphs in common character encoding tables,",
                "and an overview of Unicode ranges and UTF-8 bytes.",
@@ -28,26 +28,25 @@ use List::Util qw( first pairmap pairfirst pairs );
 
 <p>
 <:
+if ($tablist[0] eq 'unicode') {
+       say "Detailed allocation of Unicode blocks.";
+       print "See ", showlink("charsets", '/charset'), " to compare specific encodings";
+}
+else {
+
 if ($tablist[0] eq 'default') {
-       say "Overview of Unicode allocation and common latin code pages.";
+       say "Overview of Unicode ", showlink("allocation", '/charset/unicode');
+       say "and common latin code pages.";
        say "Compare alternate charsets:";
 }
 else {
        say "Charset comparison:";
 }
 
-sub optionlink {
-       my ($title, $href, $selected) = @_;
-       return sprintf(
-               $selected ? '<strong>%s</strong>' : '<a href="%2$s">%s</a>',
-               EscapeHTML($title), $href
-       );
-}
-
 print join " •\n", (
        map {
                join " ·\n", pairmap {
-                       optionlink($b || ucfirst $a, '/charset'.($a && "/$a?compare"), $a eq $Request);
+                       showlink($b || ucfirst $a, '/charset'.($a && "/$a?compare"), $a eq $Request);
                } @{$_}
        }
        [
@@ -68,6 +67,8 @@ print join " •\n", (
                hebrew   => 0,
        ],
 );
+
+}
 :>.
 </p>
 
@@ -149,10 +150,12 @@ sub tabinput {
        }
        $row{endpoint} ||= 0xFF;
 
-       if ($row{set}) {}
+       if (defined $row{table} or defined $row{cell}) {
+               $row{set} //= $input;
+       }
        elsif ($row{set} = Encode::resolve_alias($input)) {
                $row{offset} = delete $row{startpoint};
-               if ($row{set} eq 'MacHebrew' or $row{set} eq 'MacThai') {
+               if ($charset->{varchar}) {
                        # array of possibly multiple characters per code point
                        $row{table} = [
                                map { Encode::decode($row{set}, pack 'C*', $_) } $row{offset} .. $row{endpoint}
@@ -165,9 +168,7 @@ sub tabinput {
                }
 
                $row{endpoint} -= $row{offset};
-
-               $visible->{ascii} =  # assume common base
-               $visible->{ $row{set} } = 1;
+               $visible->{ascii}++;  # assume common base
        }
        else {
                Alert("Encoding <q>$input</q> unknown");
@@ -206,6 +207,7 @@ sub tabinput {
        }
 
        push @request, \%row;
+       $visible->{ $row{set} } = 1 if $row{table};
 }
 tabinput($_) for @tablist;
 
@@ -329,7 +331,7 @@ for my $row (@request) {
                        my $cp = $offset + $row->{offset};
                        my $glyph = ref $row->{table} eq 'ARRAY' ? $row->{table}->[$offset] :
                                substr $row->{table}, $offset, 1;
-                       my ($cell, $name, $class) = $glyph eq $NOCHAR ? () :
+                       my ($cell, $name, $class) = !defined $glyph || $glyph eq $NOCHAR ? () :
                                $glyphs->glyph_html($glyph);
 
                        if ($mode) {
@@ -397,7 +399,7 @@ for my $row (@request) {
        </table>
 
        <table class="glyphs"><tr>
-       <td class="X">unicode 7.0
+       <td class="X">unicode 10.0
        <td class="X Xr">proposed
        <td class="X Xd">deprecated
        <td class="">unassigned