unicode: customisable table configuration
authorMischa POSLAWSKY <perl@shiar.org>
Wed, 5 Jan 2011 20:33:26 +0000 (21:33 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 11 Jan 2011 22:41:38 +0000 (23:41 +0100)
Shiar_Sheet/FormatChar.pm
unicode.plp

index 759ca85..4668c55 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use Data::Dump 'pp';
 use PLP::Functions 'EscapeHTML';
 
-our $VERSION = '1.04';
+our $VERSION = '1.05';
 
 our $diinfo = do 'digraphs.inc.pl';
 our %di = map { $diinfo->{$_}->[0] => $_ } grep { ref $diinfo->{$_} }
@@ -205,11 +205,13 @@ sub table {
 sub print {
        my $self = shift;
        while (@_) {
-               printf '<div class="section"><h2>%s</h2>'."\n\n", shift;
+               print '<div class="section">';
+               printf '<h2>%s</h2>', shift unless ref $_[0];
+               print "\n\n";
                while (ref $_[0] and $_ = shift) {
                        print $self->table($_);
                }
-               print '</div>';
+               print "\n</div>";
        }
 }
 
index 3173cfd..cdcaa2a 100644 (file)
@@ -42,38 +42,7 @@ if (exists $get{html}) {
 
 our $verbose = exists $get{v};
 
-my $tables = do 'unicode.inc.pl' or die $@ || $!;
-
-$glyphs->print(map {
-       my $_ = /(.*)\?(.*)/ ? ($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;
-       }
-} qw{
+my @config = qw(
        Popular
                punctuation/quoting
                        common
@@ -143,7 +112,42 @@ $glyphs->print(map {
                        ?hiraderiv
                        ?kata
                        ?kataderiv
-});
+);
+
+$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $ENV{PATH_INFO}, $get{q};
+
+my $tables = do 'unicode.inc.pl' or die $@ || $!;
+
+$glyphs->print(map {
+       my $_ = /(.*)\?(.*)/ ? ($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);
 
 :></div>