--- /dev/null
+<(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>';
--- /dev/null
+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
+ )],
+);