keyboard: separate method to determine univer styling
authorMischa POSLAWSKY <perl@shiar.org>
Tue, 19 Dec 2023 18:35:06 +0000 (19:35 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Wed, 20 Dec 2023 00:36:14 +0000 (01:36 +0100)
Minor code cleanup.

Shiar_Sheet/FormatChar.pm

index 72d2e3dcadd0bc76072d004bd6562ead297fd288..3d9b6fb65538fb57cc8b62652b26e5cfd3f54b51 100644 (file)
@@ -8,7 +8,7 @@ use utf8;
 use Data::Dump 'pp';
 use PLP::Functions 'EscapeHTML';
 
-our $VERSION = '1.08';
+our $VERSION = '1.09';
 
 our $uc = do 'data/unicode-char.inc.pl';
 
@@ -61,6 +61,31 @@ sub glyph_cell {
        return sprintf('<td class="%3$s" title="%2$s">%s', $self->glyph_html($char));
 }
 
+sub glyph_level_univer {
+       my ($self, $input) = @_;
+       if ($input =~ /\p{age=unassigned}/) {
+               # check include for assignments after unicode 6.0 (perl v5.14)
+               state $agemap = do 'data/unicode-age.inc.pl';
+               my $version = $agemap->{ord $input};
+               return $version ? 'l2' : 'l1';
+       }
+       elsif ($input =~ /^\p{in=1.1}*$/) {
+               return 'l5';  # first release 1993
+       }
+       elsif ($input =~ /^\p{in=3.0}*$/) {
+               return 'l4';  # 20th century
+       }
+       elsif ($input =~ /^\p{in=4.1}*$/) {
+               return 'l4';  # over 10 years ago
+       }
+       elsif ($input =~ /^\p{in=6.0}*$/) {
+               return 'l3';  # before 2012
+       }
+       else {
+               return 'l2';  # more recent
+       }
+}
+
 sub cell {
        my ($self, $input, $html) = @_;
        my (@class, $title, $cell, $mnem, $entity);
@@ -81,33 +106,13 @@ sub cell {
 
                $input =~ s/^\\//;  # escaped char
                ($cell, $title, my $class, $mnem, $entity) = $self->glyphs_html($input);
-               my $codepoint = ord $input;
 
                if ($self->{style} eq 'univer') {
-                       if ($input =~ /\p{age=unassigned}/) {
-                               # check include for assignments after unicode 6.0 (perl v5.14)
-                               state $agemap = do 'data/unicode-age.inc.pl';
-                               my $version = $agemap->{$codepoint};
-                               push @class, $version ? 'l2' : 'l1';
-                       }
-                       elsif ($input =~ /^\p{in=1.1}*$/) {
-                               push @class, 'l5';  # first release 1993
-                       }
-                       elsif ($input =~ /^\p{in=3.0}*$/) {
-                               push @class, 'l4';  # 20th century
-                       }
-                       elsif ($input =~ /^\p{in=4.1}*$/) {
-                               push @class, 'l4';  # over 10 years ago
-                       }
-                       elsif ($input =~ /^\p{in=6.0}*$/) {
-                               push @class, 'l3';  # before 2012
-                       }
-                       else {
-                               push @class, 'l2';  # more recent
-                       }
+                       push @class, $self->glyph_level_univer($input);
                        next;
                }
 
+               my $codepoint = ord $input;
                if ($self->{style} eq 'di') {
                        if ($mnem and $mnem =~ /…/) {
                                # incomplete representation, usually partial