X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/4ed40cad555bb1bd5d76b5a59f5d986cb4b58754..e87c3b2927b3c931528dc00a5e2c598dd2e35ee1:/digraphs.plp?ds=sidebyside
diff --git a/digraphs.plp b/digraphs.plp
index 9a20f58..7106c7f 100644
--- a/digraphs.plp
+++ b/digraphs.plp
@@ -1,81 +1,180 @@
+<(common.inc.plp)><:
+
+my $mode = ($Request // '') eq 'xorg' || exists $get{xorg};
+my $modename = $mode ? 'X.Org' : 'RFC-1345';
+
+Html({
+ title => 'digraph cheat sheet',
+ version => '1.3',
+ description => [
+ "Complete table of digraph characters from $modename.",
+ ],
+ keywords => [qw'
+ digraph mnemonic compose composition pair
+ character char glyph table unicode vim xorg x11 x
+ '],
+ stylesheet => [qw'light'],
+ data => [qw( data/digraphs.inc.pl )],
+});
+
+:>
+
<:= $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.
',
+);
+say 'Unofficial proposals',
+ ' are available as ex commands.' if not $mode;
+:>
+
<:
-use utf8;
-use strict;
-use warnings;
-use open IO => ':utf8';
-
-our $VERSION = '1.0';
-
-$header{content_type} = 'text/html; charset=utf-8';
-
-:>
-
-
-
-digraph cheat sheet
-
-
-
-
-RFC-1345 Digraphs
-<:
-my $di = do 'digraphs.inc.pl';
-
-sub quote {
- local $_ = shift;
- s/"/"/g;
- s/</g;
- s/>/>/g;
- return $_;
+for my $colchars (@columns) {
+print '';
+print qq'' for map {scalar @$_} @{$colchars};
+say '';
+for my $section (qw{thead tfoot}) {
+ print "<$section>â³";
+ print ' | ', EscapeHTML($_) for map {@$_} @{$colchars};
+ say ' | ';
}
+for my $c1group (@chars) {
+ print ' |
';
+ for my $c1 (@$c1group) {
+ print '', EscapeHTML($c1);
+ for my $c2 (map {@$_} @$colchars) {
+ my $mnem = $c1 . $c2;
+ if (not defined $di->{$mnem}) {
+ print ' | ';
+ next;
+ }
+ if (ref $di->{$mnem} ne 'ARRAY') {
+ printf ' | ', EscapeHTML($mnem);
+ next;
+ }
+ my ($codepoint, $name, $support, $script, $string) = @{ $di->{$mnem} };
-my @chars = ((map {chr} ord '!' .. ord 'Z'), 'a'..'z');
-splice @chars, $_, 1, () for 2, 3-1, 5-2, 31-3; # remove character exceptions # $ & @
-print '';
-print ' ';
-print " | $_" for @chars, '_';
-print ' | ';
-for my $c1 (@chars) {
- print "$c1";
- for my $c2 (@chars, '_') {
- my $mnem = $c1 . $c2;
- if (not defined $di->{$mnem}) {
- print ' | ';
- next;
- }
- my $chr = $di->{$mnem};
+ my $glyph = $string || chr $codepoint;
+ utf8::upgrade($glyph); # prevent latin1 output
+ my $desc = $mnem . ($name && " ($name)");
+ my @class = ('X', grep {$_} $script);
+ push @class, $mode ? $support : "u-$support" if $support;
- my @class = 'any';
+ $glyph = EscapeHTML($glyph);
+ $glyph = "$glyph" if $script =~ /\bZs\b/;
- printf ' | %s',
- join(' ', @class), quote($mnem), quote(chr $chr);
+ printf "\n".' | %s',
+ join(' ', @class), EscapeHTML($desc), $glyph;
+ }
+ say "\n | ", EscapeHTML($c1);
}
- print "\n";
}
-print " |
---|
\n";
+say ' |
---|
';
+print '
' if exists $get{split};
+}
+
+if ($mode) {
+:>
+
+
+ matching RFC-1345
+ | matching proposal
+ | unique to Xorg
+ | conflict
+ | duplicate
+ |
+
+<: } else { :>
+
+
+ control
+ | space
+ | combining
+ | spacing modifier
+ | quote
+ | punctuation
+ | symbol
+ | math
+ | currency
+ | numeric
+ | greek
+ | cyrillic
+ | latin
+ | hebrew
+ | arabic
+ | korean
+ | japanese
+ | chinese
+ |
+
+
+ full support
+ | vim extension
+ | vim v8.0
+ | proposal
+ | not in vim
+ |
+
+<: }