latin: distinguish titles from row identifiers
authorMischa POSLAWSKY <perl@shiar.org>
Wed, 12 Apr 2017 16:31:05 +0000 (18:31 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 22 May 2017 15:55:29 +0000 (17:55 +0200)
latin.plp
latinsample.js
writing-latn.inc.pl

index 1dcd8c7..58c103f 100644 (file)
--- a/latin.plp
+++ b/latin.plp
@@ -21,15 +21,15 @@ Html({
                font-family: Suetterlin; /* R. G. Arens */
                src: url("/suetterlin.ttf");
        }
-       #sütterlin td { font-family: Suetterlin }
+       #suetterlin td { font-family: Suetterlin }
        #ita2 td,
-       #tap-code td,
-       #short-tap td {
+       #tap td,
+       #shorttap td {
                white-space: normal;
                word-spacing: 5em; /* force line break between words */
        }
-       #tap-code td,
-       #short-tap td {
+       #tap td,
+       #shorttap td {
                line-height: 1ex;
        }
        #ita2 td {
@@ -42,7 +42,7 @@ Html({
                stroke-linecap: square;
        }
        #nyctographs,
-       #old-roman-cursive {
+       #roman {
                stroke-linecap: round;
                stroke-linejoin: round;
        }
@@ -58,26 +58,26 @@ Html({
                text-align: left;
                padding: 1px 0.3em;
        }
-       #old-roman-cursive .sample span {
+       #roman .sample span {
                margin-right: -10px;
        }
-       #tap-code .sample,
-       #short-tap .sample {
+       #tap .sample,
+       #shorttap .sample {
                font-size: 80%;
        }
        #ita2 .sample,
-       #tap-code .sample,
-       #short-tap .sample {
+       #tap .sample,
+       #shorttap .sample {
                word-spacing: 0;
        }
        #ita2 .sample span,
-       #tap-code .sample span,
-       #short-tap .sample span {
+       #tap .sample span,
+       #shorttap .sample span {
                margin-right: 1ex;
                white-space: nowrap;
        }
-       #sutton-asl .sample span,
-       #maritime-flags .sample span,
+       #sutton .sample span,
+       #maritime .sample span,
        #morse .sample span {
                margin-right: 0.5ex;
        }
@@ -134,9 +134,11 @@ else {
        say '</thead>';
 
        for my $row (pairs @table) {
-               my ($title, $info) = @{$row};
-               printf '<tr id="%s">', (lc $title) =~ s/<[^>]+>//gr =~ s/\s+/-/gr;
-               say '<th>', $title;
+               my ($id, $info) = @{$row};
+
+               printf '<tr id="%s">', $id;
+               say '<th>', $info->{title} // ucfirst $id;
+
                my $colspan = 1;
                my $col = 0;
                for (@{ $info->{list} }) {
index a3ce6db..a120c66 100644 (file)
@@ -39,7 +39,7 @@ function appendsample() {
                        else if (cols[28] && i && col == input.charCodeAt(i - 1) - 64) {
                                col = 28; // repetition char
                        }
-                       if (row.id == 'sütterlin' && col == 19) {
+                       if (row.id == 'suetterlin' && col == 19) {
                                var final = input.length == i + 1 || input[i + 1] == ' ';
                                output += cols[col].split('&nbsp;')[final ? 1 : 0];
                        }
index c9c655c..f0a3e40 100644 (file)
@@ -38,16 +38,18 @@ sub dispbar {
 }
 
 (
-'Uppercase' => {
+uppercase => {
        list => [qw{ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z }],
 },
-'Lowercase' => {
+lowercase => {
        list => [qw{ a b c d e f g h i j k l m n o p q r s t u v w x y z }],
 },
-'Sütterlin' => {
+suetterlin => {
+       title => 'Sütterlin',
        list => [qw{ a b c d e f g h i j k l m n o p q r ſ s t u v w x y z }],
 },
-'Old Roman Cursive' => {
+roman => {
+       title => 'Old Roman Cursive',
        list => [
                map {
                        !m/^(-?)(\w.+)/ ? $_ :
@@ -81,7 +83,8 @@ sub dispbar {
                "-m3,6 c4,-1 3,3 3,3 -1,3 -2,5 -1,5 1,1 3,0 3,0",
        ],
 },
-'Sutton <abbr title="American Sign Lanugage">ASL</abbr>' => {
+sutton => {
+       title => 'Sutton <abbr title="American Sign Lanugage">ASL</abbr>',
        list => [
                # American manual alphabet in Sutton (U+1D800+) notation
                map { !!$_ && pack 'W*', map { hex "1D$_" } unpack '(A3)*', $_ } qw{
@@ -94,7 +97,8 @@ sub dispbar {
                0         965aa6
        }],
 },
-'Unistrokes' => {
+unistrokes => {
+       title => 'Unistrokes',
        list => [
                map { '<svg width="14" height="16" viewBox="-1 -1 8 10">'.$_.'</svg>' }
                map {
@@ -130,18 +134,22 @@ sub dispbar {
                'M3,4',
        ],
 },
-# 'Palm Graffiti' => {},
-'<abbr title="International Telegraph Alphabet">ITA</abbr>2' => {
+#graffiti => {
+#      title => 'Palm Graffiti',
+#},
+ita2 => {
+       title => '<abbr title="International Telegraph Alphabet">ITA</abbr>2',
        list => [map { tr/01/○●/r =~ s/..\K/ /r } qw(
                11000 10011 01110 10010 10000 10110 01011 00101 01100 11010 11110 01001 00111
                00110 00011 01101 11101 01010 10100 00001 11100 01111 11001 10111 10101 10001
                00100
        )],
 },
-'Braille' => {
+braille => {
        list => [qw{ ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵ }],
 },
-'5-point Tactile' => {
+tactile => {
+       title => '5-point Tactile',
        list => [
                map { '<svg width="9" height="12" viewBox="0 0 18 24">'.$_.'</svg>' }
                map {
@@ -158,31 +166,34 @@ sub dispbar {
                }
        ],
 },
-'Morse' => {
+morse => {
        list => [map {tr/.-/‧‑/r} qw{
                .- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. --
                -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --..
        }],
 },
-'Tap code' => {
+tap => {
+       title => 'Tap code',
        list => [map { disptap($_) } qw{
                11 12 13 14 15 21 22 23  > 24 25 31 32
                33 34 35 41 42 43 44 45 51 52 53 54 55
        }],
 },
-'Short Tap' => {
+shorttap => {
+       title => 'Short Tap',
        list => [map { disptap($_) } qw{
                11 12 13 14 21 22 23 20 > 31 -13 32 33
                30 41 42 -13 43 40 10 51 52 53 50 -31 -40
        }],
 },
-'Cards' => {
+cards => {
        list => [(
                map { chr(0x1F0A0 + $_), sprintf('<b>%s</b>', chr(0x1F0B0 + $_)) }  # spades, hearts
                1 .. 11, 13, 14  # A 2-10 J Q K
        ), '', chr(0x1F0CF), chr(0x1F0DF) ],
 },
-'Maritime flags' => {
+maritime => {
+       title => 'Maritime flags',
        list => [
                # International Code of Signals, SVG fills
                map { !!$_ && '<svg width="20" height="20" viewBox="0 0 30 30">'.s/\n?\t+//gr.'</svg>' }
@@ -288,7 +299,8 @@ sub dispbar {
                },
        ],
 },
-'Flag semaphore' => {
+flag => {
+       title => 'Flag semaphore',
        list => [
                map {
                        local $_ = $_;
@@ -303,7 +315,8 @@ sub dispbar {
                )
        ],
 },
-'Chappe semaphore' => {
+chappe => {
+       title => 'Chappe semaphore',
        list => [
                map {
                        my ($r, $pr, $pl) = split //, $_;
@@ -327,7 +340,8 @@ sub dispbar {
                )
        ],
 },
-'Prussian semaphore' => {
+prussian => {
+       title => 'Prussian semaphore',
        list => [
                map { /^\D+$/ ? $_ : sprintf
                        join('',
@@ -349,7 +363,8 @@ sub dispbar {
                )
        ],
 },
-'Code 39' => {
+code39 => {
+       title => 'Code 39',
        list => [map { dispbar($_) } qw(
                2111121121 1121121121 2121121111 1111221121 2111221111 1121221111
                1111122121 2111122111 1121122111 1111222111 2111111221 1121111221
@@ -358,21 +373,24 @@ sub dispbar {
                2211211111 1221211111            1221112111 0 1211212111
        )], # ISO/IEC 16388
 },
-'Code 93' => {
+code93 => {
+       title => 'Code 93',
        list => [map { dispbar($_) } qw(
                211113 211212 211311 221112 221211 231111 112113 112212 112311 122112
                132111 111123 111222 111321 121122 131121 212112 212211 211122 211221
                221121 222111 112122 112221 122121 123111        311211 0 111141
        )],
 },
-'Code 128' => {
+code128 => {
+       title => 'Code 128',
        list => [map { dispbar($_) } qw(
                111323 131123 131321 112313 132113 132311 211313 231113 231311 112133
                112331 132131 113123 113321 133121 313121 211331 231131 213113 213311
                213131 311123 311321 331121 312113 312311        212222 0 211412 2331112
        )],
 },
-'<abbr title="Royal Mail 4-State Customer Code">RM4SCC</abbr>' => {
+rm4scc => {
+       title => '<abbr title="Royal Mail 4-State Customer Code">RM4SCC</abbr>',
        list => [
                map {
                        my $len = length $_;
@@ -399,7 +417,8 @@ sub dispbar {
                '', 1, 3  # start/end
        ],
 },
-"D'ni" => {
+dni => {
+       title => "D'ni",
        list => [
                map {
                        state $window = 'M-.5,-.5H8.5V8.5H-.5Z';
@@ -424,7 +443,7 @@ sub dispbar {
                } 0 .. 5*5
        ],
 },
-'Pigpen' => {
+pigpen => {
        list => [
                map {
                        qq(<svg width="12" height="12" viewBox="-.5 -.5 7 7">$_</svg>)
@@ -448,7 +467,7 @@ sub dispbar {
                ),
        ],
 },
-'Nyctographs' => {
+nyctographs => {
        list => [
                map { s/M[\d,\hM]+(?=[M"])//gr }  # clean up superfluous moves
                map { sprintf
@@ -465,7 +484,7 @@ sub dispbar {
                ),
        ],
 },
-'Chromacons' => {
+chromacons => {
        list => [
                # Colour Alphabet by Paul Green-Armytage (2010)
                map {