X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/1aa2a631dbc085fcdf72c9e6cef0a0de9a67f0a4..2b137fb228bb4cf979a2c63f863c4020ae399d43:/tools/mkwordlist diff --git a/tools/mkwordlist b/tools/mkwordlist index d4dfaa2..81c3630 100755 --- a/tools/mkwordlist +++ b/tools/mkwordlist @@ -1,4 +1,31 @@ -#!/bin/sh -psql sheet -XAt -c " - SELECT json_object_agg(coalesce(form, ''), forms) FROM _cat_words -" | sed 's/:/=>/g' +#!/usr/bin/env perl +use 5.014; +use warnings; + +BEGIN { push @INC, '.' } +use Shiar_Sheet::DB; +use open ':std' => ':encoding(utf-8)'; +my $db = Shiar_Sheet::DB->connect; + +say 'use utf8;'; + +use Data::Dump 'pp'; +my %rows; +if (my $lang = shift @ARGV) { + 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; + exit; +} +else { + %rows = $db->select(_cat_words => "coalesce(id::text, ''), forms")->map; + $_ = [ map { [split /:/, $_, 3] } @{$_} ] for values %rows; + say pp \%rows; +}