perl: bundled features in older version
[sheet.git] / tools / mkwordlist
index 655524639e4131e8fecce2a68a806550d7faca23..7c71fae606c8233c76b3d64a656c2a43f5d086a2 100755 (executable)
@@ -1,27 +1,26 @@
 #!/usr/bin/env perl
 use 5.014;
 use warnings;
+use open ':std' => ':encoding(utf-8)';
+use lib $0 =~ s{[^/]+$}{..}r; # project root
 
-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 $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;
-       exit;
-}
-else {
-       %rows = $db->select(_cat_words => "coalesce(id::text, ''), forms")->map;
-       $_ = [ map { [split /:/, $_, 3] } @{$_} ] for values %rows;
-       say pp \%rows;
 }