digraphs: page metadata in subpage includes
[sheet.git] / digraphs.plp
index 57d0b0f5e53e6975b117d2ceee591d9b783347d2..6e0608c20cd41f9679b9e316f21fafe6d86067b6 100644 (file)
@@ -1,45 +1,34 @@
 <(common.inc.plp)><:
 
-my $mode = ($Request // '') eq 'xorg' || exists $get{xorg};
-my $modename = $mode ? 'X.Org' : 'RFC-1345';
+my $mode = $Request || 'vim';
+my $include = 'digraphs' . ($mode ne 'vim' && "-$mode");
 my $cmp = exists $get{cmp} ? ($get{cmp} // 1) : !!$Request;
 
+my $di = eval { Data($include) } || {};
+warn "error in $include: ", @{$@} if ref $@;
+
 Html({
-       title => 'digraph cheat sheet',
+       title => "$mode digraph cheat sheet",
        version => '1.3',
-       description => [
-               "Complete table of digraph characters from $modename.",
+       description => $di->{description} // [
+               "Complete table of digraph characters from",
+               ($di->{title} // $mode) . ".",
        ],
-       keywords => [qw'
+       keywords => [@{ $di->{keywords} // [] }, qw'
                digraph mnemonic compose composition pair
-               character char glyph table unicode vim xorg x11 x
+               character char glyph table unicode vim
        '],
        stylesheet => [qw'light'],
-       data => [qw( data/digraphs.inc.pl )],
+       data => ["data/$include.json"],
 });
 
-:>
-<h1><:= $modename :> Digraphs</h1>
-
-<p>Character mnemonics following compose key ⎄<:
-say join("\n",
-       $mode ? (
-               ' in the X Window System (Shift+AltGr by default).',
-               'Differences from <a href="/digraphs">RFC-1345</a> are indicated.',
-       ) : (':',
-               'i^k in <a href="/vi">Vim</a>,',
-               '^u^\ in <a href="/readline">Emacs</a>,',
-               '^a^v in <a href="/screen">Screen</a>.',
-               'Similar but different from <a href="/digraphs/xorg">X.Org</a>.',
-       ),
-       'Also see <a href="/unicode">common Unicode</a>.</p>',
+%{$di} or Abort(
+       "Requested digraphs <q>$mode</q> not available",
+       '404 request not found',
 );
-say '<p class="aside">Unofficial <span class="u-l2">proposals</span>',
-       ' are available as <a href="/digraphs.vim">ex commands</a>.' if not $mode;
-:>
 
-<:
-my $di = Data('digraphs');
+say "<h1>$di->{title} Digraphs</h1>";
+say "<p>$_</p>" for $di->{intro} // ();
 
 if (exists $get{v}) {
        # show characters for inverted mnemonics (vim alternatives)
@@ -58,8 +47,8 @@ my @chars2 = (['_'], @chars);  # trailing character (extended set)
 my @columns = !exists $get{split} ? \@chars2 :
        ([@chars2[0, 1, 3, 4, 6]], [@chars2[2, 5, 7]]);
 
-if ($mode) {
-       $di = Data('digraphs-xorg');
+if ($mode eq 'xorg') {
+       #TODO determine character usage from declared keys
        $chars2[0] = [qw( # ^ _ ` ~ )];
        @chars = @chars2;
 }