From 12d4eef20f4fed251cec97be02abf6b0af9a929b Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Sat, 8 Apr 2017 14:37:05 +0200 Subject: [PATCH] charset: skip option to omit rows Input only allows two start-stop ranges for now. --- charset.plp | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/charset.plp b/charset.plp index 2d4293d..e1efd83 100644 --- a/charset.plp +++ b/charset.plp @@ -15,7 +15,7 @@ Html({ data => [qw'charset-unicode.inc.pl charset-utf8.inc.pl'], }); -my @tablist = split /[^\w-]+/, $Request || 'default'; +my @tablist = split m{/+}, $Request || 'default'; :>

Character encoding

@@ -89,7 +89,7 @@ sub tabinput { 'iso-8859-6' => ['iso-8859-1' => '160'], 'iso-8859-7' => ['iso-8859-1' => '160'], 'iso-8859-8' => ['iso-8859-1' => '160'], - 'iso-8859-9' => ['iso-8859-1' => '208'], + 'iso-8859-9' => ['iso-8859-1' => '208-223+240'], 'iso-8859-10' => ['iso-8859-4' => '160'], 'iso-8859-11' => ['iso-8859-1' => '160'], 'iso-8859-13' => ['iso-8859-4' => '160'], @@ -100,14 +100,14 @@ sub tabinput { 'cp1252' => ['iso-8859-1' => '128-159'], 'cp1250' => ['iso-8859-2' => '128-191', 'cp1252' => '128'], - 'cp1254' => ['iso-8859-9' => '128-159', 'cp1252' => '128'], + 'cp1254' => ['iso-8859-9' => '128-159', 'cp1252' => '128-159+208'], 'cp874' => ['iso-8859-11' => '128-159', 'cp1252' => '128'], # windows-874 actually cp1162 - 'cp1257' => ['iso-8859-13' => '128', 'cp1252' => '128'], + 'cp1257' => ['iso-8859-13' => '128-159+255', 'cp1252' => '128'], 'cp1251' => ['cp1252' => '128'], 'cp1253' => ['cp1252' => '128'], 'cp1255' => ['iso-8859-8' => '128-223', 'cp1252' => '128'], 'cp1256' => ['cp1252' => '128'], - 'cp1258' => ['cp1252' => '128'], + 'cp1258' => ['cp1252' => '128-159+192'], 'cp850' => ['cp437' => '144'], 'cp860' => ['cp437' => '128-175'], @@ -115,14 +115,14 @@ sub tabinput { 'cp863' => ['cp437' => '128-175'], 'cp865' => ['cp437' => '144-175'], 'cp852' => ['cp850' => '128', 'cp437' => '128'], - 'cp857' => ['cp850' => '128-239', 'cp437' => '128'], + 'cp857' => ['cp850' => '128-175+208-239', 'cp437' => '128'], 'cp775' => ['cp850' => '128'], # partial cp437 - 'cp866' => ['cp437' => '128'], + 'cp866' => ['cp437' => '128-175+224'], 'cp855' => ['cp437' => '128'], 'cp1006' => ['cp437' => '128'], - 'cp737' => ['cp437' => '128'], + 'cp737' => ['cp437' => '128-175+224'], 'cp869' => ['cp437' => '128'], - 'cp862' => ['cp437' => '128'], + 'cp862' => ['cp437' => '128-159'], 'cp864' => ['cp437' => '128'], 'koi8-u' => ['koi8-r' => 128], @@ -158,14 +158,21 @@ sub tabinput { if (defined $params) { $params =~ m{ \A (? \d+) + (?: (?: [-] (? \d+) )? (?: [+] (? \d+) ) )? (?: [-] (? \d+) )? \z }x or Alert([ "Unknown range parameters for $input", - "$params is not in format start(-end)", + "$params is not in format start(-stop)(+restart(-end))", ]); $row{offset} = $+{offset}; $endpoint = $+{endpoint} if $+{endpoint}; + if (my $restart = $+{restart}) { + my $skip = int(($+{stop} || $row{offset}) / $row{cols}); + for ($skip + 1 .. ($restart / $row{cols}) - 1) { + $row{skip}->{ $_ * $row{cols} - $row{offset} }++; + } + } } if ($input =~ /^U([0-9a-f]+)(?:-([0-9a-f]+))?/) { @@ -307,6 +314,11 @@ for my $row (@request) { } print ''; while ($offset < $row->{endpoint}) { + if ($row->{skip}->{$offset}) { + $offset += $cols * $colsize; + next; + } + print ''; { if (my $rowmod = $offset % $rowdiv) { -- 2.30.0