word: organism gallery (categorised grid layout)
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 23 May 2020 02:02:42 +0000 (04:02 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Sat, 6 Jun 2020 01:49:20 +0000 (03:49 +0200)
Expansion of dieren page starting a more complete collection of terms.
Populated by most common animals and plants based on DK visual dictionaries.

word.plp [new file with mode: 0644]
wordlist.inc.pl [new file with mode: 0644]

diff --git a/word.plp b/word.plp
new file mode 100644 (file)
index 0000000..1fc290f
--- /dev/null
+++ b/word.plp
@@ -0,0 +1,74 @@
+<(common.inc.plp)><:
+
+Html({
+       title => 'words cheat sheet',
+       version => '1.0',
+       description => "Visual words",
+       keywords => [qw'
+               language
+       '],
+       data => ['wordlist.inc.pl'],
+       raw => <<'EOT',
+<style>
+ul {
+       display: flex;
+       flex-wrap: wrap;
+       align-items: end;
+}
+figure {
+       flex: 200px;
+       max-width: 300px;
+       overflow: hidden;
+}
+</style>
+EOT
+});
+
+:>
+<h1>Words</h1>
+
+<p>
+Under construction.
+Zie ook <a href="/dieren">dieren</a>.
+</p>
+
+<:
+my %table = do 'wordlist.inc.pl' or die $@ // $!;
+
+sub showimg {
+       my ($name) = @_;
+       my ($img) = $name =~ /^([\w-]+)/;
+       $name =~ y/_/ /;
+       my $hidden = $name =~ s/\?$//;
+       my $alt = $name;
+       $name = "<q>$name</q>" if $name =~ s/\?$//;
+
+       if ($img and -e ($img = "data/word/$img.jpg")) {
+               my $alt = -l $img && readlink($img) =~ s/\.jpg$//r;
+               if ($alt) {
+                       $name .= " ($alt)";
+               }
+               else {
+                       $alt = $name;
+               }
+               $name = "<figcaption>$name</figcaption>";
+               $name .= sprintf '<img src="/%s" alt="%s" />', $img, $alt;
+       }
+       elsif ($hidden) {
+               $name = "<figcaption>$name?</figcaption>";
+       }
+       return sprintf '<figure%s>%s</figure>', $hidden && !exists $get{v} && ' hidden', $name;
+}
+
+sub printimgs {
+       for my $row (@_) {
+               printf '<li>';
+               print showimg($row);
+               print '</li>';
+               printimgs(@{$_}) for $table{$row} // ();
+       }
+}
+
+say '<ul>';
+printimgs($table{''});
+say '</ul>';
diff --git a/wordlist.inc.pl b/wordlist.inc.pl
new file mode 100644 (file)
index 0000000..4ad4dfb
--- /dev/null
@@ -0,0 +1,46 @@
+use utf8;
+(
+       '' => 'levensvorm',
+       levensvorm => [qw( dier schimmel plant protist bacterie )],
+       dier => [qw( zoogdier vogel reptiel amfibie vis ongewervelde )],
+       zoogdier => [qw(
+               egel eekhoorn vleermuis wasbeer vos wolf
+               hond kat otter zeehond zeeleeuw walrus walvis dolfijn
+               hert zebra giraf kameel nijlpaard olifant neushoorn tijger leeuw
+               mens aap gorilla koala kangoeroe beer ijsbeer panda
+               knaagdier
+       )],
+       knaagdier => [qw( konijn hamster muis rat )],
+       vogel => [qw(
+               kanarie spreeuw kolibrie zwaluw kraai duif specht valk uil meeuw
+               adelaar pelikaan flamingo ooievaar kraanvogel pinguïn struisvogel
+               gans zwaan pauw fazant kalkoen kaketoe papegaai
+               dinosaurus
+       )],
+       reptiel => [qw(
+               alligator krokodil hagedis leguaan schildpad zeeschildpad slang
+       )],
+       amfibie => [qw( kikker pad kikkerdril salamander )],
+       vis => [qw( aal haai zeepaardje rog goudvis zwaardvis karper )],
+       ongewervelde => [qw( geleedpotige zeester weekdier worm neteldier spons )],
+       neteldier => [qw( kwal koraal )],
+       weekdier => [qw( slak naaktslak inktvis octopus oester mossel )],
+       geleedpotige => [qw( insect spin kreeft duizendpoot )],
+       spin => [qw( schorpioen )],
+       kreeft => [qw( zeekreeft rivierkreeft krab garnaal pissebed )],
+       insect => [qw(
+               mier termiet kakkerlak oorworm bidsprinkhaan sprinkhaan krekel
+               libel vlieg mug vlo kever vlinder mot bij wesp
+       )],
+       plant => [qw( boom cactus bloemplant zaad gras kruid )],
+       boom => [qw(
+               eik wilg populier eucalyptus beuk berk naaldboom/conifeer
+               esdoorn iep linde hulst palm
+       )],
+       'naaldboom/conifeer' => [qw( cipres den ceder spar lariks )],
+       bloemplant => [qw(
+               boterbloem zonnebloem madelief roos paardenbloem
+               tulp vingerhoedskruid kamperfoelie klaver
+               hyacint sleutelbloem lupine hei distel brandnetel
+       )],
+);