X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/a36becb00b9c03809f5fa9f6dbd154a1fe117f5d..57f9cfa126a76ddeaac15fd55e05277afdcba98f:/font.plp diff --git a/font.plp b/font.plp index ddc35b4..b081ac2 100644 --- a/font.plp +++ b/font.plp @@ -52,12 +52,14 @@ for my $os (@ossel) { # parse input my @chars; +my @querydesc; my $query = $ENV{PATH_INFO} || $get{q} || 'ipa'; for ($query) { s{^/}{}; when (qr{^[a-z]+(?:/|\z)}) { for (split / /) { + push @querydesc, "preset group $_"; my ($tablegroup, $tablename) = split m{/}, $_, 2; my @tables = $tablename ? $tables->{$tablegroup}->{$tablename} : sort values %{ $tables->{$tablegroup} }; @@ -71,14 +73,19 @@ for ($query) { } } } + when ('ipa') { + @chars = grep { !m/[a-zA-Z]/ } @chars; + } } when (qr{[\d,;\s+-]+}) { + push @querydesc, "character codepoints $_"; for (map { split /[^\d-]/ } $_) { my ($charnum, $range) = split /-/, $_; push @chars, chr $_ for $charnum .. ($range // $charnum); } } when (qr{[A-Z]}) { + push @querydesc, "unicode match $_"; eval { my $match = qr/\A\p{$_}\z/; push @chars, grep { m/$match/ } map { chr $_ } @@ -90,12 +97,15 @@ for ($query) { } } -@chars <= 1500 - or die sprintf 'too many matches (%d)'."\n", scalar @chars; +@chars <= 1500 or die sprintf( + 'too many matches (%d) for %s'."\n", + scalar @chars, join(', ', @querydesc), +); # output character list print ''; +say ''; print '' x 3; print "" for 2, map { scalar @{$oslist{$_}} } @ossel; @@ -122,7 +132,7 @@ for my $chr (@chars) { my ($class, $name, $mnem, $html, $string) = @$info; print "
'.EscapeHTML(join ', ', @querydesc).'
$_" for sprintf('%X', $codepoint), EscapeHTML($name || '?'); printf '%s', @$_ for ( - [$ascii ? 'l0' : defined $mnem ? 'l4' : 'l1', $mnem // ''], + [$ascii ? 'l0' : defined $mnem ? $class =~ /\bu-di\b/ ? 'l4' : 'l3' : 'l1', $mnem // ''], [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''], (map { !$font{$_}->{-id} ? [l0 => '?'] :