(common.inc.plp)><:
if ($Request and $Request =~ s{^edit/?}{}) {
Include 'writer.plp';
exit;
}
my $lang = $get{lang} || 'en';
my $wordlist = "data/wordlist.$lang.inc.pl";
my $limit = $get{v} // (exists $get{v} ? 4 : 3);
Html({
title => 'words cheat sheet',
version => '1.0',
description => "Visual words",
keywords => [qw'
language
'],
data => [$wordlist],
raw => (exists $get{q} && <<'EOT')
EOT
. <<'EOT',
EOT
});
if (exists $get{debug}) {
say '';
}
:>
Words
Under construction.
Zie ook dieren.
Omit translations to test.
<:
my $table = do $wordlist or die $@ // $!;
sub showimg {
my ($id, $name) = @_;
my ($imgname) = $name =~ m{^([^/]+)};
$name =~ s/\w{4} [^aoeuiyc\W] [rl]?+ \K (?= [^aoeuiy\W] [rl]? [aoeuiy] \w)//gx;
($name, my @morenames) = split m{/}, $name;
$name =~ s{\( ([^/]+) \)}{$1}x;
$name .= " ($_)" for @morenames;
my $hidden = $name =~ s/\?$//;
$name = "$name
" if $name =~ s/\?$//;
$name = "$name";
if ($id and -e (my $img = "data/word/en/$id.jpg")) {
$name .= sprintf '', $img, $imgname;
}
return sprintf '', $hidden && !exists $get{v} && ' hidden', $name;
}
sub printimgs {
say '';
for my $row (@_) {
my ($id, $level, $title) = split /:/, $row, 3;
my @type;
push @type, 'parent' if defined $table->{$id};
push @type, 'large' if $level =~ s/c$//;
push @type, 'level'.($level || 0);
printf '- ', @type ? sprintf ' class="%s"', join ' ', @type : '';
print showimg($id, $title) if $level <= $limit;
printimgs(@{$_}) for $table->{$id} // ();
print '
';
}
say '
';
}
say '';
if (exists $get{q}) {
my @rows;
if ($Request) {
my @query = $Request;
while (@query) {
push @rows, grep { (split /:/)[1] <= $limit } @query;
s/:.*// for @query;
@query = map {$_ ? @{$_} : ()} @{$table}{@query};
}
}
else {
@rows = map {ref ? @$_ : $_} values %{$table}; # flatten categories
}
@rows = sort { rand <=> .5 } @rows;
$table = {};
printimgs(@rows);
}
else {
printimgs($Request || $table->{''}->[0]);
}
say '';