X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/e155b6dc4a8a43375d222c6a920a59fceb23e128..5ece27f37579b61cebd2a43c2b127fe46c20f424:/unicode.plp diff --git a/unicode.plp b/unicode.plp index 5b3093d..475a887 100644 --- a/unicode.plp +++ b/unicode.plp @@ -31,12 +31,13 @@ use Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; if (exists $get{di}) { - $glyphs->{anno} = (!defined $get{di} || $get{di}) && 'di'; - $glyphs->{unicode} = 1; + $glyphs->{anno} = [ (!defined $get{di} || $get{di}) && 'di', 'hex' ]; } if (exists $get{q}) { - $glyphs->{unicode} = -1; - $glyphs->{anno} = 0; + $glyphs->{anno} = []; +} +if (exists $get{html}) { + $glyphs->{anno} = ['html', 'xml']; } our $verbose = exists $get{v}; @@ -45,33 +46,40 @@ my $tables = do 'unicode.inc.pl' or die $@ || $!; $glyphs->print(map { my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_; - if (/[A-Z]/) { + if (!$_) { + (); + } + elsif (/[A-Z]/) { + tr/_/ /; $_; } 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 @cells = map { $_*$rowlen .. ($_+1)*$rowlen - 1 } @select; - [ @$table[@cells] ]; - } - else { - $tables->{$group}->{$_}; + my @cells = map { + my $end = (s/-(.+)?// ? ($1 // @$table / $rowlen - 1) : $_) + 1; + $_ * $rowlen .. $end * $rowlen - 1; + } @select; + $table = [ @$table[@cells] ]; } + $table; } } qw{ Popular punctuation/quoting common - symbols/binary?symbols/binary=0 - latin/sample=0=1 - sample=2=3 + symbols/binary?symbols/binary=-5 + latin/sample=-1 + sample=2-3 ?uncommon punctuation/version punctuation/marks @@ -86,13 +94,18 @@ $glyphs->print(map { Signs solar zodiac=0?zodiac - Key commands + Key_commands keys/spacing editing modifier control command ?player + Mathematics + math/size + equal + set + logic Arrows arrows/single double @@ -103,7 +116,7 @@ $glyphs->print(map { whitetri ?-large ?-heavy - Line drawing + Line_drawing lines/double doubleh doublev