writing: prefer regexes for unicode version
authorMischa POSLAWSKY <perl@shiar.org>
Wed, 11 Feb 2015 22:31:32 +0000 (23:31 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Fri, 13 Feb 2015 16:46:33 +0000 (17:46 +0100)
Include only if unassigned, should be faster for common characters.

Shiar_Sheet/FormatChar.pm

index 6b5fb6c175829c64241f82e0d094549188a7b6f7..d3926bca4e09e26576f054a74aa825029a47ac45 100644 (file)
@@ -82,21 +82,22 @@ sub cell {
                ($cell, $title, my $class, $mnem, $entity) = $self->glyphs_html($input);
 
                if ($self->{style} eq 'univer') {
-                       state $agemap = do 'unicode-age.inc.pl' or die $!;
-                       my $version = $agemap->{ord $input};
-                       if (!$version) {
-                               push @class, 'l1';  # no known unicode assignment
+                       if ($input =~ /\p{age=unassigned}/) {
+                               # check include for assignments after unicode 6.0 (perl v5.14)
+                               state $agemap = do 'unicode-age.inc.pl';
+                               my $version = $agemap->{ord $input};
+                               push @class, $version ? 'l2' : 'l1';
                        }
-                       elsif ($version < 20) {
+                       elsif ($input =~ /^\p{in=1.1}*$/) {
                                push @class, 'l5';  # first release 1993
                        }
-                       elsif ($version < 31) {
+                       elsif ($input =~ /^\p{in=3.0}*$/) {
                                push @class, 'l4';  # 20th century
                        }
-                       elsif ($version < 50) {
+                       elsif ($input =~ /^\p{in=4.1}*$/) {
                                push @class, 'l4';  # over 10 years ago
                        }
-                       elsif ($version < 61) {
+                       elsif ($input =~ /^\p{in=6.0}*$/) {
                                push @class, 'l3';  # before 2012
                        }
                        else {