unicode: various table selection fixes and improvements
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 25 Dec 2010 02:24:10 +0000 (03:24 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 11 Jan 2011 22:41:38 +0000 (23:41 +0100)
- Bork on invalid names
- Fix spaces in titles (second word would be silently dropped)
- Skip hidden tables entirely
- Reposition maths to improve visualisation

unicode.plp

index 5f2c576704d5139dc0f199d5d6dbb1126660bc14..475a8871093405c240b86c6ff9066a89a44ee999 100644 (file)
@@ -46,15 +46,21 @@ my $tables = do 'unicode.inc.pl' or die $@ || $!;
 
 $glyphs->print(map {
        my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
 
 $glyphs->print(map {
        my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
-       if (/[A-Z]/) {
+       if (!$_) {
+               ();
+       }
+       elsif (/[A-Z]/) {
+               tr/_/ /;
                $_;
        }
        else {
                state $group;
                $group = $1 if s{^([^/]+)/}{};
                $_;
        }
        else {
                state $group;
                $group = $1 if s{^([^/]+)/}{};
-               if (s/=(.*)//) {
-                       my @select = split /=/, $1;
-                       my $table = $tables->{$group}->{$_};
+               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 $rowlen;
                        for ($rowlen = 1; $rowlen++; $rowlen <= $#$table) {
                                last if $table->[$rowlen] =~ /\./;
@@ -63,11 +69,9 @@ $glyphs->print(map {
                                my $end = (s/-(.+)?// ? ($1 // @$table / $rowlen - 1) : $_) + 1;
                                $_ * $rowlen .. $end * $rowlen - 1;
                        } @select;
                                my $end = (s/-(.+)?// ? ($1 // @$table / $rowlen - 1) : $_) + 1;
                                $_ * $rowlen .. $end * $rowlen - 1;
                        } @select;
-                       [ @$table[@cells] ];
-               }
-               else {
-                       $tables->{$group}->{$_};
+                       $table = [ @$table[@cells] ];
                }
                }
+               $table;
        }
 } qw{
        Popular
        }
 } qw{
        Popular
@@ -79,10 +83,6 @@ $glyphs->print(map {
                        ?uncommon
                punctuation/version
                punctuation/marks
                        ?uncommon
                punctuation/version
                punctuation/marks
-               math/size
-                       equal
-                       set
-                       logic
        Symbols
                symbols/currency
                        cards
        Symbols
                symbols/currency
                        cards
@@ -94,13 +94,18 @@ $glyphs->print(map {
        Signs
                        solar
                        zodiac=0?zodiac
        Signs
                        solar
                        zodiac=0?zodiac
-       Key commands
+       Key_commands
                keys/spacing
                        editing
                        modifier
                        control
                        command
                        ?player
                keys/spacing
                        editing
                        modifier
                        control
                        command
                        ?player
+       Mathematics
+               math/size
+                       equal
+                       set
+                       logic
        Arrows
                arrows/single
                        double
        Arrows
                arrows/single
                        double
@@ -111,7 +116,7 @@ $glyphs->print(map {
                        whitetri
                        ?-large
                        ?-heavy
                        whitetri
                        ?-large
                        ?-heavy
-       Line drawing
+       Line_drawing
                lines/double
                        doubleh
                        doublev
                lines/double
                        doubleh
                        doublev