word/%.min.js: word/%.js
uglifyjs -m '' $< -o $@
-data: data/digraphs.inc.pl data/unicode-cover.inc.pl data/countries.inc.pl data/browser data/termcol-xcolor.inc.pl data/digraphs-xorg.inc.pl data/unicode-sampler word
+data: data/digraphs.json data/unicode-cover.inc.pl data/countries.inc.pl data/browser data/termcol-xcolor.inc.pl data/digraphs-xorg.inc.pl data/unicode-sampler word
data/DerivedAge.txt: $(download)
tools/wget-ifmodified http://www.unicode.org/Public/UNIDATA/$(@F) $@
data/digraphs-plan9.inc.pl: tools/mkdigraphs-plan9 data/digraphs-plan9.txt
$(call cmdsave,$^)
-data/digraphs.inc.pl: tools/mkdigraphlist data/digraphs-rfc.inc.pl data/digraphs-vim.inc.pl data/digraphs-shiar.inc.pl data/unicode-char.inc.pl
+data/digraphs.json: tools/mkdigraphlist data/digraphs-rfc.inc.pl data/digraphs-vim.inc.pl data/digraphs-shiar.inc.pl data/unicode-char.inc.pl
$(call cmdsave,$<)
data/unicode-char.inc.pl: tools/mkcharinfo data/digraphs-rfc.inc.pl data/digraphs-shiar.inc.pl data/unicode-age.inc.pl unicode-table.inc.pl
$(call cmdsave,$^)
clean:
- -rm data/digraphs.inc.pl
+ -rm data/digraphs.json
-rm data/unicode-char.inc.pl
-rm data/unicode-age.inc.pl
-rm -rf data/font/
use utf8;
use open OUT => ':encoding(utf-8)', ':std';
+use JSON ();
-our $VERSION = '1.06';
+our $VERSION = '1.07';
# import and combine various digraph data
push @INC, 'data';
my $uninfo = do 'unicode-char.inc.pl'
or warn "could not include unicode details: ", $@ // $!;
-# output perl code of hash
-# (assume no backslashes or curlies, so we can just q{} w/o escaping)
-print "# automatically generated by $0\n";
-print "use utf8;\n";
-print "+{\n";
-printf '(map {$_=>0} qw{%s}),'."\n", join(' ',
+# output json map of character info
+my %table;
+$table{$_} = 0 for (
grep { !defined $di->{$_} }
map { substr($_, 1, 1).substr($_, 0, 1) } sort keys %{$di}
);
-printf "q{%s}=>[%s],\n", s/(?=[\\}])/\\/gr, join(',',
+$table{$_} = [
ord $di->{$_}, # original code point
- map {"'$_'"}
$uninfo->{ $di->{$_} }->[1] // '', # name
join(' ',
$rfc->{$_}
),
($uninfo->{ $di->{$_} }->[0] // '') =~ s/ u-di| u-prop| ex//gr, # class
$uninfo->{ $di->{$_} }->[4] // (), # string
-) for sort keys %{$di};
-print "}\n";
+] for sort keys %{$di};
+print JSON->new->ascii->canonical->encode(\%table);
__END__
=head1 SYNOPSIS
- mkdigraphlist >digraphs.inc.pl
- perl -e'$di = do "digraphs.inc.pl"; print chr $di->{DO}->[0]'
+ mkdigraphlist | jq -r '."DO"[0]' | perl -nE 'say chr' # $
=head1 DESCRIPTION
and replacement output string.
For example:
- +{
- AE => [198, 'LATIN CAPITAL LETTER AE', 'u-di', 'Latin Lu Xl u-v11'],
- EA => 'AE',
+ {
+ "AE" => [198, "LATIN CAPITAL LETTER AE", "u-di", "Latin Lu Xl u-v11"],
+ "EA" => "AE",
}
=head1 AUTHOR