From b7fdc8bc4fb07d537722ed0ab50922035e4fd148 Mon Sep 17 00:00:00 2001
From: Mischa POSLAWSKY
Date: Wed, 21 Feb 2024 22:46:02 +0100
Subject: [PATCH 1/1] digraphs: page metadata in subpage includes
Standalone xorg replacement without hardcoded html exceptions, and support
to easily define other layouts and options.
---
digraphs.plp | 49 +++++++++++++++++--------------------------
tools/mkdigraphlist | 11 ++++++++++
tools/mkdigraphs-xorg | 8 +++++++
3 files changed, 38 insertions(+), 30 deletions(-)
diff --git a/digraphs.plp b/digraphs.plp
index 57d0b0f..6e0608c 100644
--- a/digraphs.plp
+++ b/digraphs.plp
@@ -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"],
});
-:>
-<:= $modename :> Digraphs
-
-Character mnemonics following compose key â<:
-say join("\n",
- $mode ? (
- ' in the X Window System (Shift+AltGr by default).',
- 'Differences from RFC-1345 are indicated.',
- ) : (':',
- 'i^k in Vim,',
- '^u^\ in Emacs,',
- '^a^v in Screen.',
- 'Similar but different from X.Org.',
- ),
- 'Also see common Unicode.
',
+%{$di} or Abort(
+ "Requested digraphs $mode
not available",
+ '404 request not found',
);
-say 'Unofficial proposals',
- ' are available as ex commands.' if not $mode;
-:>
-<:
-my $di = Data('digraphs');
+say "
$di->{title} Digraphs
";
+say "$_
" 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;
}
diff --git a/tools/mkdigraphlist b/tools/mkdigraphlist
index 075d564..2f6acc8 100755
--- a/tools/mkdigraphlist
+++ b/tools/mkdigraphlist
@@ -45,7 +45,18 @@ $table{$_} = [
] for sort keys %{$di};
print JSON->new->ascii->canonical->encode({
+ title => 'RFC-1345',
key => \%table,
+ intro => join("\n",
+ 'Character mnemonics following compose key â:',
+ 'i^k in Vim,',
+ '^u^\ in Emacs,',
+ '^a^v in Screen.',
+ 'Similar but different from X.Org.',
+ 'Also see common Unicode.
',
+ 'Unofficial proposals',
+ 'are available as ex commands.',
+ ),
flag => {
l4 => 'full support',
l3 => 'vim extension',
diff --git a/tools/mkdigraphs-xorg b/tools/mkdigraphs-xorg
index 8df64cd..edef62d 100755
--- a/tools/mkdigraphs-xorg
+++ b/tools/mkdigraphs-xorg
@@ -52,7 +52,15 @@ while ($_ = readline) {
}
print JSON->new->canonical->indent->encode({
+ title => 'X.Org',
key => \%table,
+ intro => join("\n",
+ 'Character mnemonics following compose key â:',
+ 'in the X Window System (Shift+AltGr by default).',
+ 'Differences from RFC-1345 are indicated.',
+ 'Also see common Unicode.',
+ ),
+ keywords => [qw( xorg x11 x )],
flag => {
'l5' => "matching RFC-1345",
'l4' => "matching proposal",
--
2.30.0