This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
mktables: Add %suppressed_properties to UCD.pl
authorKarl Williamson <public@khwilliamson.com>
Fri, 4 Nov 2011 22:50:20 +0000 (16:50 -0600)
committerKarl Williamson <public@khwilliamson.com>
Tue, 8 Nov 2011 15:09:31 +0000 (08:09 -0700)
lib/unicore/mktables

index d81831b..fe33a71 100644 (file)
@@ -14307,6 +14307,40 @@ sub make_UCD () {
         }
     }
 
+    # Make a list of all combinations of properties/values that are suppressed.
+    my @suppressed;
+    foreach my $property_name (keys %why_suppressed) {
+
+        # Just the value
+        my $value_name = $1 if $property_name =~ s/ = ( .* ) //x;
+
+        # The hash may contain properties not in this release of Unicode
+        next unless defined (my $property = property_ref($property_name));
+
+        # Find all combinations
+        foreach my $prop_alias ($property->aliases) {
+            my $prop_alias_name = standardize($prop_alias->name);
+
+            # If no =value, there's just one combination possibe for this
+            if (! $value_name) {
+
+                # The property may be suppressed, but there may be a proxy for
+                # it, so it shouldn't be listed as suppressed
+                next if $prop_alias->ucd;
+                push @suppressed, $prop_alias_name;
+            }
+            else {  # Otherwise
+                foreach my $value_alias ($property->table($value_name)->aliases)
+                {
+                    next if $value_alias->ucd;
+
+                    push @suppressed, "$prop_alias_name="
+                                      .  standardize($value_alias->name);
+                }
+            }
+        }
+    }
+
     # Serialize these structures for output.
     my $loose_to_standard_value
                           = simple_dumper(\%loose_to_standard_value, ' ' x 4);
@@ -14325,6 +14359,9 @@ sub make_UCD () {
     my $prop_value_aliases = simple_dumper(\%prop_value_aliases, ' ' x 4);
     chomp $prop_value_aliases;
 
+    my $suppressed = (@suppressed) ? simple_dumper(\@suppressed, ' ' x 4) : "";
+    chomp $suppressed;
+
     my $ambiguous_names = simple_dumper(\%ambiguous_names, ' ' x 4);
     chomp $ambiguous_names;
 
@@ -14376,6 +14413,14 @@ $prop_value_aliases
 $ambiguous_names
 );
 
+# All combinations of names that are suppressed.
+# This is actually for UCD.t, so it knows which properties shouldn't have
+# entries.  If it got any bigger, would probably want to put it in its own
+# file to use memory only when it was needed, in testing.
+\@Unicode::UCD::suppressed_properties = (
+$suppressed
+);
+
 1;
 END