From: Mischa POSLAWSKY Date: Wed, 5 Jan 2011 20:33:26 +0000 (+0100) Subject: unicode: customisable table configuration X-Git-Tag: v1.5~84 X-Git-Url: http://git.shiar.nl/sheet.git/commitdiff_plain/6ae2e63f9d7f8944b507b7396686a733c6422739 unicode: customisable table configuration --- diff --git a/Shiar_Sheet/FormatChar.pm b/Shiar_Sheet/FormatChar.pm index 759ca85..4668c55 100644 --- a/Shiar_Sheet/FormatChar.pm +++ b/Shiar_Sheet/FormatChar.pm @@ -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 '

%s

'."\n\n", shift; + print '
'; + printf '

%s

', shift unless ref $_[0]; + print "\n\n"; while (ref $_[0] and $_ = shift) { print $self->table($_); } - print '
'; + print "\n
"; } } diff --git a/unicode.plp b/unicode.plp index 3173cfd..cdcaa2a 100644 --- a/unicode.plp +++ b/unicode.plp @@ -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); :>