charset: double width option, improve ascii inheritance
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 8 Apr 2017 15:22:29 +0000 (17:22 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 24 Apr 2017 23:51:41 +0000 (01:51 +0200)
charset.plp

index 6119859478217b3a87f5a467c0619e975de8392c..b1c680e1d833f41b623b981e8b878854bab4866c 100644 (file)
@@ -85,7 +85,7 @@ sub tabinput {
                use List::Util qw( first pairfirst pairs );
 
                state $INHERIT = {
                use List::Util qw( first pairfirst pairs );
 
                state $INHERIT = {
-                       'cp437'       => ['cp850' => 0], # ascii range overridden later
+                       'cp437'       => ['cp850' => 0, 'ascii' => '0-31+128'], # ascii range overridden later
                        'gsm0338'     => ['ascii' => '0-127'],
 
                        'iso-8859-2'  => ['iso-8859-1' => '160'],
                        'gsm0338'     => ['ascii' => '0-127'],
 
                        'iso-8859-2'  => ['iso-8859-1' => '160'],
@@ -166,16 +166,21 @@ sub tabinput {
                }
                elsif (defined $visible->{ascii}) {
                        $row{parent} = $parents[0];
                }
                elsif (defined $visible->{ascii}) {
                        $row{parent} = $parents[0];
-                       $params = $parents[1] || 128;
+                       $params = $parents[1] // 128;
                        $params = 128 if $params >= 128;  # ascii offset at most
                }
                elsif (@parents) {
                        $row{parent} = $parents[0];
                        $params = 128 if $params >= 128;  # ascii offset at most
                }
                elsif (@parents) {
                        $row{parent} = $parents[0];
+                       $params = $parents[1] if $parents[1] == 0;  # apply ascii end
                }
                }
-               $visible->{$_} //= 0 for $row{parent};
+               $visible->{$_} //= 0 for $row{parent} || ();
+       }
+       else {
+               # manual option to double table width
+               $row{cols} *= 2 if $params =~ s/[+]\z//;
        }
 
        }
 
-       if (defined $params) {
+       if (length $params) {
                $params =~ m{
                        \A (?<offset> \d+)
                        (?: (?: [-] (?<stop> \d+) )? (?: [+] (?<restart> \d+) ) )?
                $params =~ m{
                        \A (?<offset> \d+)
                        (?: (?: [-] (?<stop> \d+) )? (?: [+] (?<restart> \d+) ) )?