This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unicode::UCD: Fix to work on very early Unicode versions
authorKarl Williamson <khw@cpan.org>
Thu, 14 Jan 2016 16:12:32 +0000 (09:12 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 14 Jan 2016 17:49:11 +0000 (10:49 -0700)
Prior to this commit, it would not compile because 2 properties weren't
defined in very early Unicodes.

charclass_invlists.h
lib/Unicode/UCD.pm
regcharclass.h

index 8ecbb30..868413c 100644 (file)
@@ -74573,7 +74573,7 @@ static const UV XPosixXDigit_invlist[] = { /* for EBCDIC 037 */
 #endif /* EBCDIC 037 */
 
 /* Generated from:
- * 40444e5cd670b57be97020416a80439abe6d08dc75b4fd29745894749183e9a0 lib/Unicode/UCD.pm
+ * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm
  * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
  * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
  * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt
index 56033a7..13c2c78 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 no warnings 'surrogate';    # surrogates can be inputs to this
 use charnames ();
 
-our $VERSION = '0.63';
+our $VERSION = '0.64';
 
 require Exporter;
 
@@ -384,6 +384,9 @@ my %SIMPLE_UPPER;
 my %UNICODE_1_NAMES;
 my %ISO_COMMENT;
 
+# Eval'd so can run on versions earlier than the property is available in
+my $Hangul_Syllables_re = eval 'qr/\p{Block=Hangul_Syllables}/';
+
 sub charinfo {
 
     # This function has traditionally mimicked what is in UnicodeData.txt,
@@ -438,7 +441,7 @@ sub charinfo {
     # "Canonical" imply a compatible decomposition, and the type is prefixed
     # to that, as it is in UnicodeData.txt
     UnicodeVersion() unless defined $v_unicode_version;
-    if ($v_unicode_version ge v2.0.0 && $char =~ /\p{Block=Hangul_Syllables}/) {
+    if ($v_unicode_version ge v2.0.0 && $char =~ $Hangul_Syllables_re) {
         # The code points of the decomposition are output in standard Unicode
         # hex format, separated by blanks.
         $prop{'decomposition'} = join " ", map { sprintf("%04X", $_)}
@@ -1233,6 +1236,9 @@ The routine returns B<false> otherwise.
 
 =cut
 
+# Eval'd so can run on versions earlier than the property is available in
+my $Composition_Exclusion_re = eval 'qr/\p{Composition_Exclusion}/';
+
 sub compexcl {
     my $arg  = shift;
     my $code = _getcode($arg);
@@ -1243,7 +1249,7 @@ sub compexcl {
     return if $v_unicode_version lt v3.0.0;
 
     no warnings "non_unicode";     # So works on non-Unicode code points
-    return chr($code) =~ /\p{Composition_Exclusion}/;
+    return chr($code) =~ $Composition_Exclusion_re
 }
 
 =head2 B<casefold()>
index 106e380..8eb7e06 100644 (file)
 #endif /* H_REGCHARCLASS */
 
 /* Generated from:
- * 40444e5cd670b57be97020416a80439abe6d08dc75b4fd29745894749183e9a0 lib/Unicode/UCD.pm
+ * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm
  * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
  * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
  * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt