Unicode properties: fix L& (the #12319 didn't allow L&,
Jarkko Hietaniemi [Wed, 3 Oct 2001 16:47:30 +0000 (16:47 +0000)]
only IsL&) and Inherited (negative lookahead good);
add tests for Common, Inherited, and L&.

p4raw-id: //depot/perl@12320

lib/utf8_heavy.pl
pod/perltodo.pod
t/op/pat.t

index 0961509..3efd421 100644 (file)
@@ -23,7 +23,7 @@ sub SWASHNEW {
 
        defined %utf8::In || do "unicore/In.pl";
 
-       $type =~ s/^In(?:[-_]|\s+)?//i;
+       $type =~ s/^In(?:[-_]|\s+)?(?!herited$)//i;
        $type =~ s/\s+$//;
 
        my $inprefix = substr(lc($type), 0, 3);
@@ -43,7 +43,7 @@ sub SWASHNEW {
 
        unless (defined $file) {
            # This is separate from 'To' in preparation of Is.pl (a la In.pl).
-           if ($type =~ /^Is([A-Z][A-Za-z]*|L&)$/) {
+           if ($type =~ /^Is([A-Z][A-Za-z]*|L&)$/ || $type =~ /^(L&)$/ ) {
                my $cat = $1 eq 'L&' ? 'L' : $1;
                $file = "unicore/Is/$cat";
            } elsif ((not defined $file) && $type =~ /^To([A-Z][A-Za-z]*)$/) {
index 1f57c0c..2a086f9 100644 (file)
@@ -73,9 +73,9 @@ C<\p{IsPs}>.
 
 =item *
 
-Allow for the metaproperties C<Any> and C<Assigned>, and C<Common>;
+Allow for the metaproperties C<Any> and C<Assigned>;
 C<Alphabetic>, C<Ideographic>, C<Lowercase>, C<Uppercase> (note that
-are large classes than the general categories C<Lu> and C<Ll>),
+these are larger classes than the general categories C<Lu> and C<Ll>),
 C<White Space>, C<Bidi Control>, C<Join Control>, C<ASCII Hex Digit>,
 C<Hex Digit>, <Noncharacter Code Point>, C<ID Start>, C<ID Continue>,
 C<XID Start>, C<XID Continue>, C<NF*_NO>, C<NF*_MAYBE>.
index 6379866..63c5ba2 100755 (executable)
@@ -6,7 +6,7 @@
 
 $| = 1;
 
-print "1..738\n";
+print "1..744\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -2206,3 +2206,27 @@ print "# some Unicode properties\n";
     print "ok 738\n";
 
 }
+
+{
+    print "not " if     "a" =~ /\p{Common}/;
+    print "ok 739\n";
+
+    print "not " unless "1" =~ /\p{Common}/;
+    print "ok 740\n";
+}
+
+{
+    print "not " if     "a"       =~ /\p{Inherited}/;
+    print "ok 741\n";
+
+    print "not " unless "\x{300}" =~ /\p{Inherited}/;
+    print "ok 742\n";
+}
+
+{
+    print "not " unless "a" =~ /\p{L&}/;
+    print "ok 743\n";
+
+    print "not " if     "1" =~ /\p{L&}/;
+    print "ok 744\n";
+}