feature.pl: %BundleRanges
authorFather Chrysostomos <sprout@cpan.org>
Fri, 23 Dec 2011 00:13:17 +0000 (16:13 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 24 Dec 2011 17:25:14 +0000 (09:25 -0800)
This hash will be used by subsequent commits to generate macros for
checking individual features.

regen/feature.pl

index 6cbcd62..18e2ece 100755 (executable)
@@ -31,6 +31,10 @@ my %default_feature = (
     array_base      => 'noarybase',
 );
 
+# NOTE: If a feature is ever enabled in a non-contiguous range of Perl
+#       versions, any code below that uses %BundleRanges will have to
+#       be changed to account.
+
 my %feature_bundle = (
      default =>        [keys %default_feature],
     "5.9.5"  =>        [qw(say state switch array_base)],
@@ -58,6 +62,21 @@ for( sort keys %feature_bundle ) {
        $UniqueBundles{$value} = $_;
     }
 }
+                          # start   end
+my %BundleRanges; # say => ['5.10', '5.15'] # unique bundles for values
+for my $bund (
+    sort { $a eq 'default' ? -1 : $b eq 'default' ? 1 : $a cmp $b }
+         values %UniqueBundles
+) {
+    for (@{$feature_bundle{$bund}}) {
+       if (@{$BundleRanges{$_} ||= []} == 2) {
+           $BundleRanges{$_}[1] = $bund
+       }
+       else {
+           push @{$BundleRanges{$_}}, $bund;
+       }
+    }
+}
 
 ###########################################################################