sample: enforce ltr direction in character table
[sheet.git] / sample.plp
index f824e1458e39e4f24356267692f28ac8900090ff..79df0335bd95306f384183de836a347fd8aecc73 100644 (file)
@@ -1,12 +1,15 @@
 <(common.inc.plp)><:
 
 my $textinc = 'data/unicode-sampler/unicode.txt';
+my $proto = sprintf('http%s://', !!$ENV{HTTPS} && 's');
+my $preview = "$proto$ENV{HTTP_HOST}/sample.png";
 
 Html({
        title => "unicode sampler",
-       version => '2.0',
+       version => '2.1',
        stylesheet => [qw'light dark mono red'],
        data => [$textinc],
+       raw => qq(<meta property="og:image" content="$preview" />),
 });
 
 open my $source, '<', $textinc
@@ -14,15 +17,22 @@ open my $source, '<', $textinc
 local $/ = "\n\n";
 
 my $top = readline $source;
-my ($title, $hr, $intro) = split /\n(\H)$1+\n/, $top, 2;
+my ($title, $hr, $intro) = split /\n(\pP)\1+\n/, $top, 2;
 say "<h1>$title</h1>";
+printf '<p>HTML display of <a href="%s">plain text</a>', $textinc;
+say ' intended for monospaced (terminal) output.</p>';
 
 say '<pre>';
 print $intro;
 
 while (my $p = readline $source) {
        EscapeHTML($p);
-       $p =~ s{ \A (\N+:) \n\Z }{<h2>$1</h2>}x;
+       $p =~ s{ \A ((\pL+) \N*:) \n }{<h2 id="\L$2\E">$1</h2>}x;
+       if ($2 eq 'Unicode') {
+               # table without proper direction control
+               $p =~ s/^(?= )/\x{202d}/gm; # ltr override every line
+       }
+       $p =~ s{(?<=^  )([\p{Latin} ]+:)}{<em>$1</em>}gm;
        print $p;
 }