X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/b64f0a388f259bdb272fbafe9d6f3cd0b2e26e7a..0f98e302b76baf1f7a9db14bc24fa8398243046e:/charset.plp?ds=inline
diff --git a/charset.plp b/charset.plp
index 5b415ee..726ca7c 100644
--- a/charset.plp
+++ b/charset.plp
@@ -36,18 +36,10 @@ else {
say "Charset comparison:";
}
-sub optionlink {
- my ($title, $href, $selected) = @_;
- return sprintf(
- $selected ? '%s' : '%s',
- EscapeHTML($title), $href
- );
-}
-
print join " â¢\n", (
map {
join " ·\n", pairmap {
- optionlink($b || ucfirst $a, '/charset'.($a && "/$a?compare"), $a eq $Request);
+ showlink($b || ucfirst $a, '/charset'.($a && "/$a?compare"), $a eq $Request);
} @{$_}
}
[
@@ -149,10 +141,12 @@ sub tabinput {
}
$row{endpoint} ||= 0xFF;
- if ($row{set}) {}
+ if (defined $row{table} or defined $row{cell}) {
+ $row{set} //= $input;
+ }
elsif ($row{set} = Encode::resolve_alias($input)) {
$row{offset} = delete $row{startpoint};
- if ($row{set} eq 'MacHebrew' or $row{set} eq 'MacThai') {
+ if ($charset->{varchar}) {
# array of possibly multiple characters per code point
$row{table} = [
map { Encode::decode($row{set}, pack 'C*', $_) } $row{offset} .. $row{endpoint}
@@ -165,9 +159,7 @@ sub tabinput {
}
$row{endpoint} -= $row{offset};
-
- $visible->{ascii} = # assume common base
- $visible->{ $row{set} } = 1;
+ $visible->{ascii}++; # assume common base
}
else {
Alert("Encoding $input
unknown");
@@ -178,6 +170,12 @@ sub tabinput {
while (my ($offset, $sub) = each %{$replace}) {
$offset -= $row{offset};
+ if (ref $row{table} eq 'ARRAY') {
+ $row{table}->[$offset] = $sub
+ if $offset >= 0 and $offset <= $row{endpoint};
+ next;
+ }
+
my $length = length $sub;
if ($offset < 0) {
@@ -200,6 +198,7 @@ sub tabinput {
}
push @request, \%row;
+ $visible->{ $row{set} } = 1 if $row{table};
}
tabinput($_) for @tablist;
@@ -323,7 +322,7 @@ for my $row (@request) {
my $cp = $offset + $row->{offset};
my $glyph = ref $row->{table} eq 'ARRAY' ? $row->{table}->[$offset] :
substr $row->{table}, $offset, 1;
- my ($cell, $name, $class) = $glyph eq $NOCHAR ? () :
+ my ($cell, $name, $class) = !defined $glyph || $glyph eq $NOCHAR ? () :
$glyphs->glyph_html($glyph);
if ($mode) {