latin: palm graffiti font placeholder
[sheet.git] / dieren.plp
index e4dd7465185de6cd8f549806ca5731ae046b643f..50f9981ec32a163a428a75ff607f555502ef13cd 100644 (file)
@@ -1,17 +1,40 @@
 <(common.inc.plp)><:
+use warnings;
+no warnings 'qw';
 
-my $verbose = exists $get{v} && ($get{v} // 1);
 my $intro = 'dieren die in het Nederlands vernoemd zijn naar andere dieren.';
-$intro .= '.. en dergelijke.' if $verbose;
-$intro .= '.. enzo.' if $verbose >= 2;
+my %subpages = (
+       standaard => {
+               title => 'dieren',
+               intro => $intro,
+               altlink => 'Zie ook <a href="/dieren/uitgebreid">verdergezochte verbanden</a>' .
+                          ' of het <a href="/dieren/beknopt">beknopte overzicht</a>.',
+       },
+       uitgebreid => {
+               title => 'uitgebreid dieren',
+               intro => "$intro.. en dergelijke.",
+               altlink => 'Zie het <a href="/dieren">populaire overzicht</a> voor minder.',
+               prefix => '#',
+               secrets => 1,
+       },
+       beknopt => {
+               title => 'beknopt dieren',
+               intro => "een aantal $intro",
+               altlink => 'Zie het <a href="/dieren">populaire overzicht</a> voor meer.',
+       },
+);
+
+$Request ||= 'standaard';
+my $pageinfo = $subpages{$Request}
+       or Html(), Abort("Onbekende dierenpagina <q>$Request</q>", '404 request not found');
 
 Html({
-       title => ($verbose && 'uitgebreid ') . 'dieren cheat sheet',
+       title => $pageinfo->{title}.' cheat sheet',
        version => '1.0',
-       description => "Tabeloverzicht met afbeeldingen van $intro",
+       description => "Tabeloverzicht met afbeeldingen van $pageinfo->{intro}",
        keywords => [qw'
                dier beest naam naamgeving woord taal nederlands gerelateerd
-               relatie vernoemd vernoeming combinatie samenstelling onverwant
+               relatie vernoemd vernoeming combinatie samenstelling voorvoegsel onverwant
                land zee lucht  animals dutch language
        '],
        raw => <<'EOT',
@@ -19,21 +42,38 @@ Html({
 table {
        width: 100%;
 }
-tr:first-child th {
-       word-break: break-all;
+th {
+       width: 1%; /* min-content */
 }
-img {
-       vertical-align: bottom;
-       width: 100%;
+td {
+       width: 15%; /* 1fr */
+       vertical-align: top;
 }
-img[hidden] {
+figure[hidden] {
        transition: opacity 1s 0s;
        display: inline;
        opacity: 0;
 }
-img[hidden]:hover {
+figure[hidden]:hover {
        opacity: 1;
-       transition-delay: 2s;
+       transition-delay: 1s;
+}
+
+@media (max-width: 60em) {
+       figcaption {
+               position: static;
+               padding: 0;
+               font-size: 50%;
+       }
+       figcaption small {
+               display: none;
+       }
+       th:first-child {
+               display: none;
+       }
+       th {
+               font-size: 50%;
+       }
 }
 </style>
 EOT
@@ -44,42 +84,56 @@ EOT
 
 <p>
 <:
-say ucfirst $intro;
-if ($verbose) {
-       say 'Zie het <a href="?">populaire overzicht</a> voor minder.';
-}
-else {
-       say 'Zie ook minderbekende en <a href="?v">verdergezochte verbanden</a>.';
-}
+say ucfirst $pageinfo->{intro};
+say $pageinfo->{altlink};
 :>
 </p>
 
 <:
 my @table = qw(
-       >:         origineel: zee-:        meer_water:    aardig:      anders:      #:
-       >hond:     hond       zeehond      waterhond?     aardhond?    vleerhond    #rodehond
-       >kat:      kat        zeekat       meerkat        caterpillar? tijgerkat    #
-       #>haas:    haas       zeehaas      waterhaas      aardhaas?    ossenhaas?   #
-       >muis:     muis       zeemuis      waterspitsmuis aardmuis     vleermuis    #
-       >rat:      rat        zeerat       waterrat       woestijnrat  buidelrat    #beverrat
-       >egel:     egel       zee-egel     wateregel?     aardegel?    mierenegel   #
-       >varken:   varken     zeevarken    waterzwijn     aardvarken   stekelvarken #
-       >koe:      koe        zeekoe       meerkoetje     aardkoe?     koedoe       #haiku?
-       >paard:    paard      zeepaardje   nijlpaard      aardpaard?   luipaard     #
-       #>hoorn:   eenhoorn   zeehoorn     zee-eenhoorn?  aardhoorn?   neushoorn    #eekhoorn
-       #>bra:     brassiere? zebra        waterbra?      aardbra?     cobra        #
-       #>olifant: olifant    zeeolifant   waterolifant?  landolifant? #            #
-       >beer:     beer       zeebeer      waterbeertje   ijsbeer      wasbeer      #neusbeer
-       >leeuw:    leeuw      zeeleeuw     waterleeuw?    aardleeuw?   mierenleeuw  #
-       #>wolf:    wolf       zeewolf      waterwolf?     aardwolf     buidelwolf   #
-       >haan:     haan       zeehaan      waterhaan      rotshaan     sprinkhaan   #
-       #>pad:     pad        zeepad?      waterpad?      landpad      schildpad    #
-       #>draak:   draak      zeedraak     waterdraak     aarddraak?   komododraak  #
-       #>vlo:     vlo        strandvlo    watervlo       aardvlo      #            #
-       #>mot:     mot        zeemot?      watermot       aardmot?     marmot       #
-       #>bij:     bij        zeebij?      waterbij       aardbij      #            #
+        >:        origineel: zee-:        meer_water:    land/aardig: anders:      #:
+        >hond:    hond       zeehond      waterhond??    prairiehond  vleerhond    #rodehond
+        >kat:     kat        zeekat       meerkat        cat_325?    vliegende_kat #tijgerkat
+       #>haas:    haas       zeehaas      waterhaas      koolhaas?    ossenhaas?   #buidelhaas
+        >muis:    muis       zeemuis      waterspitsmuis aardmuis     vleermuis    #computermuis
+        >rat:     rat        zeerat       waterrat       woestijnrat  buidelrat    #beverrat
+        >egel:    egel       zee-egel     wateregel? aardegel??=cactus mierenegel  #kegel?
+        >varken:  varken     zeevarken=bruinvis
+                               waterzwijn=capibara       aardvarken   stekelvarken #feestvarken?
+        >koe:     koe        zeekoe       meerkoetje     aardekoe??   koedoe       #haiku?
+        >paard:   paard      zeepaardje   nijlpaard      aardpaard??  luipaard     #tijgerpaard
+       #>hoorn:   eenhoorn   zeehoorn     zee-eenhoorn?=narwal
+                                                    bergahorn=esdoorn neushoorn    #eekhoorn
+       #>bra:   bra(ssière)? zebra        -              -            cobra        #sabra
+       #>olifant: olifant    zeeolifant   olifantsvis    kamerolifant? -           #olifantsoor
+        >beer:    beer       zeebeer      waterbeertje   ijsbeer      wasbeer      #neusbeer
+        >leeuw:   leeuw      zeeleeuw     waterleeuw??   aardleeuw??=kameleon
+                                                                      mierenleeuw  #
+        >wolf:    wolf       zeewolf      waterwolf??=snoek  aardwolf korenwolf    #strandwolf=bruine_hyena
+        >haan:    haan       zeehaan      waterhaan      rotshaan     sprinkhaan   #wilde_haan??=wildrooster
+       #>pad:     pad        zebrapad?    waterpad?      landpad      schildpad    #paddenstoel
+       #>draak:   draak      zeedraak     waterdraak=agame          - komododraak=varaan #
+       #>vlo:     vlo        zeevlo       watervlo       aardvlo      vlok?        #
+       #>mot:     mot        marmot       watermot       bergamot     -            #
+       #>bij:     bij        -            waterbij       aardbei      moerbei      hommelbij
 );
 
+@table = qw(
+       >hond    zeehond    prairiehond
+       >kat     zeekat     meerkat
+       >muis    zeemuis    vleermuis
+       >egel    zee-egel   mierenegel
+       >varken  zeevarken  stekelvarken
+       >koe     zeekoe     meerkoetje
+       >paard   zeepaardje nijlpaard
+       >olifant zeeolifant olifantsvis
+       >beer    zeebeer    wasbeer
+       >leeuw   zeeleeuw   mierenleeuw
+       >wolf    zeewolf    korenwolf
+       >haan    zeehaan    sprinkhaan
+       >mot     marmot     bergamot
+) if $Request eq 'beknopt';
+
 if (exists $get{r}) {
        use List::MoreUtils qw( part );
        my @trans = (part { state $col; /^#?>/ ? ($col = 0) : ++$col } @table);
@@ -95,33 +149,45 @@ if (exists $get{r}) {
 
 say '<table>';
 while (my $name = shift @table) {
-       if ($name =~ s/^#// and !$verbose) {
+       if ($name =~ s/^#// and !$pageinfo->{prefix}) {
                while ($name = shift @table) {
                        last if $name =~ m/^>/;
                }
+               $name or next;
        }
        if ($name =~ s/^>//) {
                # leading dash starts a new row
                say '</tr>' if $name;
                print "<tr>";
        }
+       $name =~ s/^-$//;
+       my ($img) = $name =~ /^([\w-]+)/;
+       $name =~ y/_/ /;
        if ($name =~ s/:$//) {
                # trailing colon indicates header text
-               $name =~ y/_/ /;
                print "<th>$name</th>";
                next;
        }
-       printf '<td title="%s">', $name // '?';
+       print '<td>';
+       my $alt = $1 if $name =~ s/=(.*)//;
        my $hidden = $name =~ s/\?$//;
-       if ($name and -e (my $img = "data/dieren/$name.jpg")) {
+       $name = "<q>$name</q>" if $name =~ s/\?$//;
+       $name .= " <small>($alt)</small>" if $alt;
+
+       printf '<figure%s>', $hidden && !$pageinfo->{secrets} && ' hidden';
+       if ($img and -e ($img = "data/dieren/$img.jpg")) {
                printf '<img src="/%s"', $img;
-               printf ' alt="%s"', -l $img ? readlink($img) =~ s/\.jpg$//r : $name;
-               print ' hidden' if $hidden and $verbose < 2;
+               printf ' alt="%s"', $alt || $name;
                print ' />';
+               print "<figcaption>$name</figcaption>";
+       }
+       elsif ($hidden) {
+               printf '<figcaption>%s</figcaption>', "$name?";
        }
-       elsif (!$hidden) {
+       else {
                print $name;
        }
+       print '</figure>';
        print '</td>';
 }
 say '</tr></table>';