-use strict;
+use 5.020;
use warnings;
+use experimental 'signatures';
use Unicode::Normalize qw( NFKD );
use Text::Unidecode qw( unidecode );
use Shiar_Sheet::FormatChar;
-our %rows;
-
my $uc = Shiar_Sheet::FormatChar->new;
-my %g; # present group classes
-{
+
+sub kbchars ($rows) {
+ my %g; # present group classes
+ return {
rows => [1, 0],
def => {
'' => {
map {
- my $v = $rows{$_};
+ my $v = $rows->{$_};
my $class = 'g'.(
!defined $v || $_ eq $v ? 1 # identical
: $v =~ /\A\p{Mn}+\z/ ? 9 # combining accent
);
$g{$class} = 1;
$_ => $class
- } keys %rows
+ } keys %{$rows}
},
},
key => {
map {
- my ($glyph, $title) = $uc->glyph_html($rows{$_});
+ my ($glyph, $title) = $uc->glyph_html($rows->{$_});
$_ => join "\n", $glyph, $title
- } keys %rows
+ } keys %{$rows}
},
flag => {%{{
g2 => ['accented', "decomposes to the original letter with a combining accent"],
g8 => ['mark', "modifier letter or mark (spacing diacritic)"],
g9 => ['combining', "diacritical mark to be combined with a following character"],
}}{keys %g}},
+ };
}
+
+1;