dieren: derived additions (leeuwerik, draak*, behemoth)
[sheet.git] / dieren.plp
1 <(common.inc.plp)><:
2 use warnings;
3 no warnings 'qw';
4
5 my $intro = 'dieren die in het Nederlands vernoemd zijn naar andere dieren.';
6 my %subpages = (
7         standaard => {
8                 title => 'dieren',
9                 intro => $intro,
10                 altlink => 'Zie ook <a href="/dieren/uitgebreid">verdergezochte verbanden</a>' .
11                            ' of het <a href="/dieren/beknopt">beknopte overzicht</a>.',
12         },
13         uitgebreid => {
14                 title => 'uitgebreid dieren',
15                 intro => "$intro.. en dergelijke.",
16                 altlink => 'Zie het <a href="/dieren">populaire overzicht</a> voor minder.',
17                 prefix => '#',
18                 secrets => 1,
19         },
20         beknopt => {
21                 title => 'beknopt dieren',
22                 intro => "een aantal $intro",
23                 altlink => 'Zie het <a href="/dieren">populaire overzicht</a> voor meer.',
24         },
25 );
26
27 $Request ||= 'standaard';
28 my $pageinfo = $subpages{$Request}
29         or Html(), Abort("Onbekende dierenpagina <q>$Request</q>", '404 request not found');
30
31 Html({
32         title => $pageinfo->{title}.' cheat sheet',
33         version => '1.0',
34         description => "Tabeloverzicht met afbeeldingen van $pageinfo->{intro}",
35         keywords => [qw'
36                 dier beest naam naamgeving woord taal nederlands gerelateerd
37                 relatie vernoemd vernoeming combinatie samenstelling voorvoegsel onverwant
38                 land zee lucht  animals dutch language
39         '],
40         raw => <<'EOT',
41 <style>
42 figure[hidden] {
43         opacity: 0; /* secret */
44         transition: opacity 1s 0s;
45         display: block;
46 }
47 figure[hidden]:hover {
48         opacity: 1;
49         transition-delay: 1s;
50 }
51 figure[hidden]:hover > figcaption {
52         transition-delay: 2s;
53 }
54
55 @media (max-width: 60em) {
56         td, th {
57                 font-size: 50%;
58         }
59         figcaption small {
60                 display: none;
61         }
62         th:first-child {
63                 display: none;
64         }
65 }
66 </style>
67 EOT
68 });
69
70 :>
71 <h1>Dierennamen <small>(Dutch animal names)</small></h1>
72
73 <p>
74 <:
75 say ucfirst $pageinfo->{intro};
76 say $pageinfo->{altlink};
77 :>
78 </p>
79
80 <:
81 my @table = qw(
82          >:        origineel: zee-:        meer_water:    land/aardig: anders:      #:
83          >hond:    hond       zeehond      scheepshond?   prairiehond  vleerhond    #rodehond
84          >kat:     kat        zeekat       meerkat        cat_325?    vliegende_kat #tijgerkat
85         #>haas:    haas       zeehaas      waterhaas      koolhaas?    ossenhaas?   #buidelhaas
86          >muis:    muis       zeemuis      waterspitsmuis aardmuis     vleermuis    #computermuis
87          >rat:     rat        zeerat       waterrat       woestijnrat  buidelrat    #beverrat
88          >egel:    egel       zee-egel     wateregel? aardegel??=cactus mierenegel  #kegel?
89          >varken:  varken     zeevarken=bruinvis
90                                 waterzwijn=capibara       aardvarken   stekelvarken #feestvarken?
91          >koe:     koe        zeekoe       meerkoetje     aardekoe??   koedoe       #haiku?
92          >paard:   paard      zeepaardje   nijlpaard      (turn)paard? luipaard     #tijgerpaard
93         #>hoorn:   eenhoorn   zeehoorn     zee-eenhoorn?=narwal
94                                                      bergahorn=esdoorn neushoorn    #eekhoorn
95         #>bra:   bra(ssière)? zebra        -              -            cobra        #sabra
96         #>olifant: olifant    zeeolifant   olifantsvis    kamerolifant? -           #olifantsoor
97          >beer:    beer       zeebeer      waterbeertje   ijsbeer      wasbeer      #neusbeer
98          >leeuw:   leeuw      zeeleeuw     waterleeuw??   aardleeuw??=kameleon
99                                                                        mierenleeuw  #leeuwerik
100          >wolf:    wolf       zeewolf      waterwolf??=snoek  aardwolf korenwolf    #strandwolf=bruine_hyena
101          >haan:    haan       zeehaan      waterhaan      rotshaan     sprinkhaan   #wilde_haan??=wildrooster
102         #>pad:     pad        zebrapad?    waterpad?      landpad      schildpad    #paddenstoel
103          >draak:   draak      zeedraak     waterdraak=agame aarddraak?=戊辰
104                                                            komododraak=varaan       #drakenkop
105         #>vlo:     vlo        zeevlo       watervlo       aardvlo      -            vlok?
106         #>mot:     mot        marmot       watermot       bergamot     behemoth?    #
107         #>bij:     bij        -            waterbij       aardbei      moerbei      hommelbij
108 );
109 if ($Request eq 'standaard') {
110         $table[4 + 9*7] = 'grasmodderpaard?=草泥马'; # replace turnpaard
111         $table[1 + 18*7] = 'draak_'; # irl animal
112 }
113
114 @table = qw(
115         >hond    zeehond    prairiehond
116         >kat     zeekat     meerkat
117         >muis    zeemuis    vleermuis
118         >egel    zee-egel   mierenegel
119         >varken  zeevarken  stekelvarken
120         >koe     zeekoe     meerkoetje
121         >paard   zeepaardje nijlpaard
122         >olifant zeeolifant olifantsvis
123         >beer    zeebeer    wasbeer
124         >leeuw   zeeleeuw   mierenleeuw
125         >wolf    zeewolf    korenwolf
126         >haan    zeehaan    sprinkhaan
127         >mot     marmot     bergamot
128 ) if $Request eq 'beknopt';
129
130 if (exists $get{r}) {
131         use List::MoreUtils qw( part );
132         my @trans = (part { state $col; /^#?>/ ? ($col = 0) : ++$col } @table);
133         @table = ();
134         for (@trans) {
135                 unshift @$_, '?:' if $_->[0] !~ /:$/;
136                 $_->[0] =~ s/^#?\K>?/>>/;
137                 for (@$_) {
138                         push @table, s/^#?\K>/$1/r;
139                 }
140         }
141 }
142
143 say '<table class="gallery">';
144 while (my $name = shift @table) {
145         if ($name =~ s/^#// and !$pageinfo->{prefix}) {
146                 while ($name = shift @table) {
147                         last if $name =~ m/^>/;
148                 }
149                 $name or next;
150         }
151         if ($name =~ s/^>//) {
152                 # leading dash starts a new row
153                 say '</tr>' if $name;
154                 print "<tr>";
155         }
156         $name =~ s/^-$//;
157         my ($img) = $name =~ /([\w-]+)/;
158         $name =~ y/_/ /;
159         if ($name =~ s/:$//) {
160                 # trailing colon indicates header text
161                 print "<th>$name</th>";
162                 next;
163         }
164         print '<td>';
165         my $alt = $1 if $name =~ s/=(.*)//;
166         my $hidden = $name =~ s/\?$//;
167         $name = "<q>$name</q>" if $name =~ s/\?$//;
168         $name .= " <small>($alt)</small>" if $alt;
169
170         printf '<figure%s>', $hidden && !$pageinfo->{secrets} && ' hidden';
171         if ($img and -e ($img = "data/dieren/$img.jpg")) {
172                 printf '<img src="/%s"', $img;
173                 printf ' alt="%s"', $alt || $name;
174                 print ' />';
175                 print "<figcaption>$name</figcaption>";
176         }
177         elsif ($hidden) {
178                 printf '<figcaption>%s</figcaption>', "$name?";
179         }
180         else {
181                 print $name;
182         }
183         print '</figure>';
184         print '</td>';
185 }
186 say '</tr></table>';