X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/2fdc882fb5c5ddfdac1c40bf2ce6e0aae60e18cf..02d3c22d5c4670f1f939099b90147ba53008c1e0:/tools/mkwordlist diff --git a/tools/mkwordlist b/tools/mkwordlist index 9076a09..7611b9f 100755 --- a/tools/mkwordlist +++ b/tools/mkwordlist @@ -4,14 +4,23 @@ use warnings; BEGIN { push @INC, '.' } use Shiar_Sheet::DB; -use open ':std' => ':utf8'; +use open ':std' => ':encoding(utf-8)'; my $db = Shiar_Sheet::DB->connect; say 'use utf8;'; use Data::Dump 'pp'; -if (my $lang = shift @ARGV) { - say pp({ $db->select(word => "coalesce(ref, id), exportform(row(form,alt,lang,cat,ref,prio,source,thumb,wptitle,created,updated,CASE WHEN source IS NULL THEN ref ELSE id END,cover,grade,creator))", {lang => $lang})->map }) =~ s/\\x\{([0-9A-F]+)\}/chr hex $1/ger; - exit; +my %rows; +my $lang = shift @ARGV or die "Missing language\n"; +{ + my %filter = (lang => $lang); + my $cols = "ref, array_to_string(form || alt, '/'), prio, id, sub"; + %rows = $db->select(_word => $cols, \%filter)->map_arrays; + defined $_->[-1] or pop @$_ for values %rows; + $rows{''} = [ + (undef) x 3, + [$db->select(word => 'id', {cat => undef, ref => undef})->flat] + ]; + say pp \%rows + =~ s/\\x\{([0-9A-F]+)\}/chr hex $1/ger; } -say pp { $db->select(_cat_words => "coalesce(id::text, ''), forms")->map };