dieren: empty cells to fill missing columns
[sheet.git] / dieren.plp
1 <(common.inc.plp)><:
2
3 Html({
4         title => 'dieren cheat sheet',
5         version => '1.0',
6         description => [],
7         keywords => [qw'
8                 dier beest naam naamgeving woord taal nederlands gerelateerd
9                 relatie vernoemd vernoeming combinatie samenstelling onverwant
10                 land zee lucht  animals dutch language
11         '],
12         raw => <<'EOT',
13 <style>
14 table {
15         width: 100%;
16 }
17 tr:first-child th {
18         word-break: break-all;
19 }
20 img {
21         vertical-align: bottom;
22         width: 100%;
23 }
24 img[hidden] {
25         transition: opacity 1s 0s;
26         display: inline;
27         opacity: 0;
28 }
29 img[hidden]:hover {
30         opacity: 1;
31         transition-delay: 2s;
32 }
33 </style>
34 EOT
35 });
36
37 :>
38 <h1>Dierennamen <small>(Dutch animal names)</small></h1>
39
40 <p>Dieren die in het Nederlands vernoemd zijn naar andere dieren.</p>
41
42 <:
43 my @table = qw(
44         >:         origineel: zee-:        meer_water:    aardig:      anders:      #:
45         >hond:     hond       zeehond      waterhond?     aardhond?    vleerhond    #rodehond
46         >kat:      kat        zeekat       meerkat        caterpillar? tijgerkat    #
47         #>haas:    haas       zeehaas      waterhaas      aardhaas?    ossenhaas?   #
48         >muis:     muis       zeemuis      waterspitsmuis aardmuis     vleermuis    #
49         >rat:      rat        zeerat       waterrat       woestijnrat  buidelrat    #beverrat
50         >egel:     egel       zee-egel     wateregel?     aardegel?    mierenegel   #
51         >varken:   varken     zeevarken    waterzwijn     aardvarken   stekelvarken #
52         >koe:      koe        zeekoe       meerkoetje     aardkoe?     koedoe       #haiku?
53         >paard:    paard      zeepaardje   nijlpaard      aardpaard?   luipaard     #
54         #>hoorn:   eenhoorn   zeehoorn     zee-eenhoorn?  aardhoorn?   neushoorn    #eekhoorn
55         #>bra:     brassiere? zebra        waterbra?      aardbra?     cobra        #
56         #>olifant: olifant    zeeolifant   waterolifant?  landolifant? #            #
57         >beer:     beer       zeebeer      waterbeertje   ijsbeer      wasbeer      #neusbeer
58         >leeuw:    leeuw      zeeleeuw     waterleeuw?    aardleeuw?   mierenleeuw  #
59         #>wolf:    wolf       zeewolf      waterwolf?     aardwolf     buidelwolf   #
60         >haan:     haan       zeehaan      waterhaan      rotshaan     sprinkhaan   #
61         #>pad:     pad        zeepad?      waterpad?      landpad      schildpad    #
62         #>draak:   draak      zeedraak     waterdraak     aarddraak?   komododraak  #
63         #>vlo:     vlo        strandvlo    watervlo       aardvlo      #            #
64         #>mot:     mot        zeemot?      watermot       aardmot?     marmot       #
65         #>bij:     bij        zeebij?      waterbij       aardbij      #            #
66 );
67
68 if (exists $get{r}) {
69         use List::MoreUtils qw( part );
70         my @trans = (part { state $col; /^#?>/ ? ($col = 0) : ++$col } @table);
71         @table = ();
72         for (@trans) {
73                 unshift @$_, '?:' if $_->[0] !~ /:$/;
74                 $_->[0] =~ s/^#?\K>?/>>/;
75                 for (@$_) {
76                         push @table, s/^#?\K>/$1/r;
77                 }
78         }
79 }
80
81 say '<table>';
82 while (my $name = shift @table) {
83         if ($name =~ s/^#// and not exists $get{v}) {
84                 while ($name = shift @table) {
85                         last if $name =~ m/^>/;
86                 }
87         }
88         if ($name =~ s/^>//) {
89                 # leading dash starts a new row
90                 say '</tr>' if $name;
91                 print "<tr>";
92         }
93         if ($name =~ s/:$//) {
94                 # trailing colon indicates header text
95                 $name =~ y/_/ /;
96                 print "<th>$name</th>";
97                 next;
98         }
99         printf '<td title="%s">', $name // '?';
100         my $hidden = $name =~ s/\?$//;
101         if ($name and -e (my $img = "data/dieren/$name.jpg")) {
102                 printf '<img src="/%s"', $img;
103                 printf ' alt="%s"', -l $img ? readlink($img) =~ s/\.jpg$//r : $name;
104                 print ' hidden' if $hidden;
105                 print ' />';
106         }
107         elsif (!$hidden) {
108                 print $name;
109         }
110         print '</td>';
111 }
112 say '</tr></table>';