perl: missing minor v5.14 features
[sheet.git] / tools / mkwordlist
index b88cd1bdd1adf23a525f7c6715f541864d2e0617..7c71fae606c8233c76b3d64a656c2a43f5d086a2 100755 (executable)
@@ -1,5 +1,26 @@
-#!/bin/sh
-echo 'use utf8;'
-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;
+use open ':std' => ':encoding(utf-8)';
+use lib $0 =~ s{[^/]+$}{..}r; # project root
+
+use Shiar_Sheet::DB;
+my $db = Shiar_Sheet::DB->connect;
+
+say 'use utf8;';
+
+use Data::Dump 'pp';
+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;
+}