common: bump version to 1.11
[sheet.git] / unicode.plp
index 2f9969a..7949edc 100644 (file)
@@ -2,7 +2,7 @@
 
 Html({
        title => 'unicode glyph cheat sheet',
-       version => 'v1.0',
+       version => '1.2',
        description => [
                "Common Unicode characters with digraph or code point, layed out for quick location.",
                "Includes general symbols, arrows, drawing characters, and IPA letters.",
@@ -11,7 +11,7 @@ Html({
                unicode glyph char character reference common ipa symbol sign mark table digraph
        '],
        stylesheet => [qw'light dark mono circus red'],
-       data => [qw'digraphs.inc.pl unicode.inc.pl'],
+       data => [qw( unicode-table.inc.pl data/unicode-char.inc.pl )],
 });
 
 :>
@@ -26,7 +26,6 @@ i^k or i^vu respectively in <a href="/vi">Vim</a>.
 <div class="diinfo">
 
 <:
-use 5.010;
 use Shiar_Sheet::FormatChar;
 my $glyphs = Shiar_Sheet::FormatChar->new;
 
@@ -36,61 +35,51 @@ if (exists $get{di}) {
 if (exists $get{q}) {
        $glyphs->{anno} = [];
 }
+if (exists $get{html}) {
+       $glyphs->{anno} = ['html', 'xml'];
+       $glyphs->{style} = 'html';
+}
 
 our $verbose = exists $get{v};
 
-my $tables = do 'unicode.inc.pl' or die $@ || $!;
-
-$glyphs->print(map {
-       my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
-       if (/[A-Z]/) {
-               $_;
-       }
-       else {
-               state $group;
-               $group = $1 if s{^([^/]+)/}{};
-               if (s/=(.*)//) {
-                       my @select = split /=/, $1;
-                       my $table = $tables->{$group}->{$_};
-                       my $rowlen;
-                       for ($rowlen = 1; $rowlen++; $rowlen <= $#$table) {
-                               last if $table->[$rowlen] =~ /\./;
-                       }
-                       my @cells = map { $_*$rowlen .. ($_+1)*$rowlen - 1 } @select;
-                       [ @$table[@cells] ];
-               }
-               else {
-                       $tables->{$group}->{$_};
-               }
-       }
-} qw{
+my @config = qw(
        Popular
                punctuation/quoting
-                       common
-               symbols/binary?symbols/binary=0
-               latin/sample=0=1
-                       sample=2=3
+                       common=-5?common
+               symbols/binary?symbols/binary=-5
+               latin/sample=-1
+                       ?sample=2-
                        ?uncommon
                punctuation/version
                punctuation/marks
+                       spacing
        Symbols
                symbols/currency
-                       cards
+                       cards=-3?cards
                        ?chess
+                       harvey
                        signs1
                        communic=0?communic
                        trinity=0?trinity
                        signs2
        Signs
                        solar
-                       zodiac=0?zodiac
-       Key commands
+                       ?minorplanets
+                       zodiac=0-1=3?zodiac
+       Key_commands
                keys/spacing
                        editing
                        modifier
                        control
                        command
+                       android=0
+                       ps
                        ?player
+       Mathematics
+               math/size
+                       equal
+                       set
+                       logic
        Arrows
                arrows/single
                        double
@@ -101,7 +90,7 @@ $glyphs->print(map {
                        whitetri
                        ?-large
                        ?-heavy
-       Line drawing
+       Line_drawing
                lines/double
                        doubleh
                        doublev
@@ -122,24 +111,60 @@ $glyphs->print(map {
                ipa/cons
                        consco
                        vowels
+                       tones
+                       contours
        ?Japanese
                ?japanese/hira
                        ?hiraderiv
                        ?kata
                        ?kataderiv
-});
+);
 
-:></div>
+splice @config, 4, 2, qw(
+               latin/vowels=-5?latin/vowels
+                        westeuro
+                       ?easteuro
+) if exists $get{html};
 
-<div class="legend">
-       <table class="glyphs"><tr>
-       <td class="X l4">ascii
-       <td class="X l3"><:= $glyphs->{style} eq 'di' ? 'digraph' : 'latin1' :>
-       <td class="X l2"><:= $glyphs->{style} eq 'di' ? 'proposed' : 'BMP' :>
-       <td class="X l1">other unicode
-       <td class="X ex">discouraged
-       </table>
-</div>
+$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $Request, $get{q};
 
+my $tables = do 'unicode-table.inc.pl' or die $@ || $!;
+
+$glyphs->print(map {
+       $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
+       if (!$_) {
+               ();
+       }
+       elsif (/[A-Z]/) {
+               tr/_/ /;
+               $_;
+       }
+       else {
+               state $group;
+               $group = $1 if s{^([^/]+)/}{};
+               my @select = s/=(.*)// ? split(/=/, $1) : ();
+               my $table = $tables->{$group}->{$_}
+                       or die "Unknown table specified: $group/$_";
+
+               if (@select) {
+                       my $rowlen;
+                       for ($rowlen = 1; $rowlen++; $rowlen <= $#$table) {
+                               last if $table->[$rowlen] =~ /\./;
+                       }
+                       my @cells = map {
+                               my $end = (s/-(.+)?// ? ($1 // @$table / $rowlen - 1) : $_) + 1;
+                               $_ * $rowlen .. $end * $rowlen - 1;
+                       } @select;
+                       $table = [ @$table[@cells] ];
+               }
+               $table;
+       }
+} @config);
+
+say "</div>\n";
+
+say for $glyphs->legend;
+
+:>
 <script type="text/javascript" src="/clipboard.js"></script>