keyboard/altgr/index: hardcoded includes list
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 22 Apr 2024 21:06:48 +0000 (23:06 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 22 Apr 2024 22:53:55 +0000 (00:53 +0200)
keyboard/altgr/index.inc.pl [new file with mode: 0644]
keyboard/altgr/index.inc.plp

diff --git a/keyboard/altgr/index.inc.pl b/keyboard/altgr/index.inc.pl
new file mode 100644 (file)
index 0000000..47a0b7a
--- /dev/null
@@ -0,0 +1,9 @@
+use strict;
++{
+       default => [qw( euro latin science graph )],
+       euro => [qw( windows ukext macos macos-abc weur eurkey msx )],
+       latin => [qw( ipa olpc boyeg drix )],
+       science => [qw( symbolics apl spacecadet )],
+       graph => [qw( unigraph emojiworks )],
+       extra => [qw( msx-graph p8scii zoo )],
+}
index 9e4d6b53dc88bf3e2b99995d45a9a61a4bfd6708..208cae215e3e2cc3256e64c1051f3048203d7dd9 100644 (file)
@@ -3,7 +3,8 @@ use 5.014;
 use warnings;
 use utf8;
 
-my @incs = glob 'keyboard/altgr/*.eng.inc.pl';
+my $dirbase = 'keyboard/altgr';
+my $indexfile = "$dirbase/index";
 
 Html({
        title => "altgr keyboard cheat sheets",
@@ -16,9 +17,9 @@ Html({
        keywords => [qw'
                sheet cheat reference overview keyboard altgr option
        '],
-       image => 'data/keyboard/thumb/ibm-m.jpg',
+       image => "$dirbase/thumb/ibm-m.jpg",
        stylesheet => [qw( light dark circus mono red )],
-       data => ['keyboard/altgr/index.inc.plp', @incs],
+       data => ["$dirbase/index.inc.plp", "$indexfile.inc.pl"],
        raw => <<'.',
 <style>
 .keys.cmp {
@@ -113,6 +114,10 @@ img {
 <p>Overview of available key layouts with AltGr or similar modifier keys.</p>
 
 <:
+my $idx = Data($indexfile);
+my @incs;
+push @incs, @{ $idx->{$_} } for @{ $idx->{default} };
+
 my @sample = split /(?<!\+)/, $get{sample} // 'asSci1!+1';
 require Shiar_Sheet::Keyboard;
 use List::Util qw( uniq max );
@@ -131,14 +136,11 @@ if (@sample) {
        print "<th>$_" for @sample;
        say '</tr></thead>';
 }
-my %idx = map {s/\Q.inc.pl\E$//; ($_ => eval{ Data($_) })} @incs;
+my %idx = map {($_ => scalar eval{ Data("$dirbase/$_.eng") })} @incs;
 my $most = max(map { scalar keys %{$_->{def}{''}} } values %idx);
-for my $inc (sort {
-       ($idx{$a}{category} // 0) cmp ($idx{$b}{category} // 0)
-       || $a cmp $b
-} keys %idx) {
+for my $inc (@incs) {
        print @sample ? '<tr><th>' : '<figure>';
-       printf '<a href="/%s">', $inc =~ s/\.eng$//r;
+       printf '<a href="/%s">', "$dirbase/$inc";
        my $table = $idx{$inc};
        my $title = $table && $table->{title} || $inc;