From 6311c65d7397e07947d6cf38df772545a3fa296d Mon Sep 17 00:00:00 2001
From: Mischa POSLAWSKY
Date: Mon, 30 May 2022 17:40:02 +0200
Subject: [PATCH] dieren: external word include with prefixed beknopt picks
---
dieren.inc.pl | 29 +++++++++++
dieren.plp | 140 ++++++++++++++++++--------------------------------
2 files changed, 80 insertions(+), 89 deletions(-)
create mode 100644 dieren.inc.pl
diff --git a/dieren.inc.pl b/dieren.inc.pl
new file mode 100644
index 0000000..475fa12
--- /dev/null
+++ b/dieren.inc.pl
@@ -0,0 +1,29 @@
+#!/bin/env perl
+use 5.014;
+use warnings;
+use utf8;
+
+[map {[split ' ']} grep {$_} split /\n/, <<'.'];
+ : origineel: zee-: meer_water: land/aardig: anders: #:
+ hond: +hond +zeehond ?scheepshond +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 ?(turn)paard 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 #leeuwerik
+ 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 ?aarddraak=æè¾° komododraak=varaan #drakenkop
+#vlo: vlo zeevlo watervlo aardvlo - #vlok
+#mot: +mot +marmot watermot +bergamot ?behemoth #
+#bij: bij - waterbij aardbei moerbei #hommelbij
+.
diff --git a/dieren.plp b/dieren.plp
index 4187dc8..deb2ac3 100644
--- a/dieren.plp
+++ b/dieren.plp
@@ -9,18 +9,22 @@ my %subpages = (
intro => $intro,
altlink => 'Zie ook verdergezochte verbanden ' .
' of het beknopte overzicht .',
+ prefix => qr/^(?!#)\+?/, # no # optional +
+ colfilter => 0,
},
uitgebreid => {
title => 'uitgebreid dieren',
intro => "$intro.. en dergelijke.",
altlink => 'Zie het populaire overzicht voor minder.',
- prefix => '#',
+ prefix => qr/^[#+]*/, # optional # or +
secrets => 1,
},
beknopt => {
title => 'beknopt dieren',
intro => "een aantal $intro",
altlink => 'Zie het populaire overzicht voor meer.',
+ prefix => qr/^\+/, # only +
+ colfilter => 1,
},
);
@@ -78,108 +82,66 @@ say $pageinfo->{altlink};
<:
-my @table = map {[split ' ']} grep {$_} split /\n(?!\s{3})/, q(
- >: origineel: zee-: meer_water: land/aardig: anders: #:
- >hond: hond zeehond scheepshond? 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 (turn)paard? 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 #leeuwerik
- >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 aarddraak?=æè¾°
- komododraak=varaan #drakenkop
- #>vlo: vlo zeevlo watervlo aardvlo - vlok?
- #>mot: mot marmot watermot bergamot behemoth? #
- #>bij: bij - waterbij aardbei moerbei hommelbij
-);
+my $table = readdata('dieren');
if ($Request eq 'standaard') {
- $table[ 9][4] = 'grasmodderpaard?=è泥马'; # replace turnpaard
- $table[18][1] = 'draak_'; # irl animal
+ $table->[ 9][4] = '?grasmodderpaard=è泥马'; # replace turnpaard
+ $table->[18][1] = 'draak_'; # irl animal
}
-@table = map {[split ' ']} grep {$_} split /\n/, q(
- >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);
- @table = ();
+ my @trans = (part { state $col; /^#?>/ ? ($col = 0) : ++$col } @{$table});
+ $table = [];
for (@trans) {
unshift @$_, '?:' if $_->[0] !~ /:$/;
$_->[0] =~ s/^#?\K>?/>>/;
for (@$_) {
- push @table, s/^#?\K>/$1/r;
+ push @$table, s/^#?\K>/$1/r;
}
}
}
-say '';
-for my $row (@table) {
-for my $name (@{$row}) {
- if ($name =~ s/^#// and !$pageinfo->{prefix}) {
- last;
- }
- if ($name =~ s/^>//) {
- # leading dash starts a new row
- say '' if $name;
- print "";
+for my $prefix ($pageinfo->{prefix}) {
+ for my $col ($pageinfo->{colfilter} // ()) {
+ @{$table} = grep { $_->[$col] =~ $prefix } @{$table};
}
- $name =~ s/^-$//;
- my ($img) = $name =~ /([\w-]+)/;
- $name =~ y/_/ /;
- if ($name =~ s/:$//) {
- # trailing colon indicates header text
- print "$name ";
- next;
- }
- print '';
- my $alt = $1 if $name =~ s/=(.*)//;
- my $hidden = $name =~ s/\?$//;
- $name = "$name " if $name =~ s/\?$//;
- $name .= " ($alt) " if $alt;
+ $_ = [ grep { s/$prefix// } @{$_} ] for @{$table};
+}
- printf '', $hidden && !$pageinfo->{secrets} && ' hidden';
- if ($img and -e ($img = "data/dieren/$img.jpg")) {
- printf ' ';
- print "$name ";
- }
- elsif ($hidden) {
- printf '%s ', "$name?";
- }
- else {
- print $name;
+say '';
+for my $row (@{$table}) {
+ print '';
+ for my $name (@{$row}) {
+ my $hidden = $name =~ s/^\?//;
+ $name =~ s/^-$//;
+ my ($img) = $name =~ /([\w-]+)/;
+ $name =~ y/_/ /;
+ if ($name =~ s/:$//) {
+ # trailing colon indicates header text
+ print "$name ";
+ next;
+ }
+ print '';
+ my $alt = $1 if $name =~ s/=(.*)//;
+ $name = "$name " if $name =~ s/\?$//;
+ $name .= " ($alt) " if $alt;
+
+ printf '', $hidden && !$pageinfo->{secrets} && ' hidden';
+ if ($img and -e ($img = "data/dieren/$img.jpg")) {
+ printf ' ';
+ print "$name ";
+ }
+ elsif ($hidden) {
+ printf '%s ', "$name?";
+ }
+ else {
+ print $name;
+ }
+ print ' ';
+ print ' ';
}
- print '';
- print '';
-}
+ say ' ';
}
-say '
';
+say '
';
--
2.30.0