tools: validate utf8 encoding in stdin/out
[sheet.git] / tools / mkwordlist
1 #!/usr/bin/env perl
2 use 5.014;
3 use warnings;
4
5 BEGIN { push @INC, '.' }
6 use Shiar_Sheet::DB;
7 use open ':std' => ':encoding(utf-8)';
8 my $db = Shiar_Sheet::DB->connect;
9
10 say 'use utf8;';
11
12 use Data::Dump 'pp';
13 my %rows;
14 if (my $lang = shift @ARGV) {
15         my %filter = (lang => $lang);
16         my $cols = "ref, array_to_string(form || alt, '/'), prio + coalesce(grade, 90) / 100::float, id, cat";
17         %rows = $db->select(_word_ref => $cols, \%filter)->map_arrays;
18         say pp \%rows
19                 =~ s/\\x\{([0-9A-F]+)\}/chr hex $1/ger;
20         exit;
21 }
22 else {
23         %rows = $db->select(_cat_words => "coalesce(id::text, ''), forms")->map;
24         $_ = [ map { [split /:/, $_, 3] } @{$_} ] for values %rows;
25         say pp \%rows;
26 }