Merge branch 'smoke-me/coreutils' into blead
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 21 May 2013 12:32:53 +0000 (13:32 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Tue, 21 May 2013 12:32:53 +0000 (13:32 +0100)
1  2 
dist/Module-CoreList/lib/Module/CoreList/Utils.pm

index 0000000,e0b07b5..a04ef6c
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,854 +1,854 @@@
 -$VERSION = '2.85';
+ package Module::CoreList::Utils;
+ use strict;
+ use warnings;
+ use vars qw[$VERSION %utilities];
+ use Module::CoreList;
+ use Module::CoreList::TieHashDelta;
++$VERSION = '2.91';
+ sub utilities {
+     my $perl = shift;
+     $perl = shift if eval { $perl->isa(__PACKAGE__) };
+     return unless $perl or exists $utilities{$perl};
+     return sort keys %{ $utilities{$perl} };
+ }
+ sub first_release_raw {
+     my $util = shift;
+     $util = shift if eval { $util->isa(__PACKAGE__) };
+       #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+     my $version = shift;
+     my @perls = $version
+         ? grep { exists $utilities{$_}{ $util } &&
+                         $utilities{$_}{ $util } ge $version } keys %utilities
+         : grep { exists $utilities{$_}{ $util }             } keys %utilities;
+     return grep { exists $Module::CoreList::released{$_} } @perls;
+ }
+ sub first_release_by_date {
+     my @perls = &first_release_raw;
+     return unless @perls;
+     return (sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } @perls)[0];
+ }
+ sub first_release {
+     my @perls = &first_release_raw;
+     return unless @perls;
+     return (sort { $a cmp $b } @perls)[0];
+ }
+ sub removed_from {
+   my @perls = &removed_raw;
+   return shift @perls;
+ }
+ sub removed_from_by_date {
+   my @perls = sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } &removed_raw;
+   return shift @perls;
+ }
+ sub removed_raw {
+   my $util = shift;
+   $util = shift if eval { $util->isa(__PACKAGE__) };
+   return unless my @perls = sort { $a cmp $b } first_release_raw($util);
+   @perls = grep { exists $Module::CoreList::released{$_} } @perls;
+   my $last = pop @perls;
+   my @removed = grep { $_ > $last } sort { $a cmp $b } keys %utilities;
+   return @removed;
+ }
+ my %delta = (
+     5 => {
+         changed => {
+             'a2p'                   => '1',
+             'c2ph'                  => '1',
+             'cppstdin'              => '1',
+             'find2perl'             => '1',
+             'pstruct'               => '1',
+             's2p'                   => '1',
+         },
+         removed => {
+         }
+     },
+     5.001 => {
+         delta_from => 5,
+         changed => {
+             'h2xs'                  => '1',
+         },
+         removed => {
+         }
+     },
+     5.002 => {
+         delta_from => 5.001,
+         changed => {
+             'h2ph'                  => '1',
+             'perlbug'               => '1',
+             'perldoc'               => '1',
+             'pod2html'              => '1',
+             'pod2latex'             => '1',
+             'pod2man'               => '1',
+             'pod2text'              => '1',
+         },
+         removed => {
+         }
+     },
+     5.00307 => {
+         delta_from => 5.002,
+         changed => {
+             'pl2pm'                 => '1',
+         },
+         removed => {
+            'cppstdin'              => 1,
+            'pstruct'               => 1,
+         }
+     },
+     5.004 => {
+         delta_from => 5.00307,
+         changed => {
+             'splain'                => '1',
+         },
+         removed => {
+         }
+     },
+     5.005 => {
+         delta_from => 5.00405,
+         changed => {
+             'perlcc'                => '1',
+         },
+         removed => {
+         }
+     },
+     5.00503 => {
+         delta_from => 5.005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.00405 => {
+         delta_from => 5.004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.006 => {
+         delta_from => 5.00504,
+         changed => {
+             'dprofpp'               => '1',
+             'pod2usage'             => '1',
+             'podchecker'            => '1',
+             'podselect'             => '1',
+             'pstruct'               => '1',
+         },
+         removed => {
+         }
+     },
+     5.006001 => {
+         delta_from => 5.006,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.007003 => {
+         delta_from => 5.006002,
+         changed => {
+             'libnetcfg'             => '1',
+             'perlivp'               => '1',
+             'psed'                  => '1',
+             'xsubpp'                => '1',
+         },
+         removed => {
+         }
+     },
+     5.008 => {
+         delta_from => 5.007003,
+         changed => {
+             'enc2xs'                => '1',
+             'piconv'                => '1',
+         },
+         removed => {
+         }
+     },
+     5.008001 => {
+         delta_from => 5.008,
+         changed => {
+             'cpan'                  => '1',
+         },
+         removed => {
+         }
+     },
+     5.009 => {
+         delta_from => 5.008009,
+         changed => {
+         },
+         removed => {
+            'corelist'              => 1,
+            'instmodsh'             => 1,
+            'prove'                 => 1,
+         }
+     },
+     5.008002 => {
+         delta_from => 5.008001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.006002 => {
+         delta_from => 5.006001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.008003 => {
+         delta_from => 5.008002,
+         changed => {
+             'instmodsh'             => '1',
+             'prove'                 => '1',
+         },
+         removed => {
+         }
+     },
+     5.00504 => {
+         delta_from => 5.00503,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.009001 => {
+         delta_from => 5.009,
+         changed => {
+             'instmodsh'             => '1',
+             'prove'                 => '1',
+         },
+         removed => {
+         }
+     },
+     5.008004 => {
+         delta_from => 5.008003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.008005 => {
+         delta_from => 5.008004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.008006 => {
+         delta_from => 5.008005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.009002 => {
+         delta_from => 5.009001,
+         changed => {
+             'corelist'              => '1',
+         },
+         removed => {
+         }
+     },
+     5.008007 => {
+         delta_from => 5.008006,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.009003 => {
+         delta_from => 5.009002,
+         changed => {
+             'ptar'                  => '1',
+             'ptardiff'              => '1',
+             'shasum'                => '1',
+         },
+         removed => {
+         }
+     },
+     5.008008 => {
+         delta_from => 5.008007,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.009004 => {
+         delta_from => 5.009003,
+         changed => {
+             'config_data'           => '1',
+         },
+         removed => {
+         }
+     },
+     5.009005 => {
+         delta_from => 5.009004,
+         changed => {
+             'cpan2dist'             => '1',
+             'cpanp'                 => '1',
+             'cpanp-run-perl'        => '1',
+         },
+         removed => {
+            'perlcc'                => 1,
+         }
+     },
+     5.010000 => {
+         delta_from => 5.009005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.008009 => {
+         delta_from => 5.008008,
+         changed => {
+             'corelist'              => '1',
+         },
+         removed => {
+         }
+     },
+     5.010001 => {
+         delta_from => 5.010000,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.011 => {
+         delta_from => 5.010001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.011001 => {
+         delta_from => 5.011,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.011002 => {
+         delta_from => 5.011001,
+         changed => {
+             'perlthanks'            => '1',
+         },
+         removed => {
+         }
+     },
+     5.011003 => {
+         delta_from => 5.011002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.011004 => {
+         delta_from => 5.011003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.011005 => {
+         delta_from => 5.011004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.012 => {
+         delta_from => 5.011005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013 => {
+         delta_from => 5.012005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.012001 => {
+         delta_from => 5.012,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013001 => {
+         delta_from => 5.013,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013002 => {
+         delta_from => 5.013001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013003 => {
+         delta_from => 5.013002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013004 => {
+         delta_from => 5.013003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.012002 => {
+         delta_from => 5.012001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013005 => {
+         delta_from => 5.013004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013006 => {
+         delta_from => 5.013005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013007 => {
+         delta_from => 5.013006,
+         changed => {
+             'ptargrep'              => '1',
+         },
+         removed => {
+         }
+     },
+     5.013008 => {
+         delta_from => 5.013007,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013009 => {
+         delta_from => 5.013008,
+         changed => {
+             'json_pp'               => '1',
+         },
+         removed => {
+         }
+     },
+     5.012003 => {
+         delta_from => 5.012002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013010 => {
+         delta_from => 5.013009,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.013011 => {
+         delta_from => 5.013010,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.014 => {
+         delta_from => 5.013011,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.014001 => {
+         delta_from => 5.014,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015 => {
+         delta_from => 5.014004,
+         changed => {
+         },
+         removed => {
+            'dprofpp'               => 1,
+         }
+     },
+     5.012004 => {
+         delta_from => 5.012003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015001 => {
+         delta_from => 5.015,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015002 => {
+         delta_from => 5.015001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015003 => {
+         delta_from => 5.015002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.014002 => {
+         delta_from => 5.014001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015004 => {
+         delta_from => 5.015003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015005 => {
+         delta_from => 5.015004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015006 => {
+         delta_from => 5.015005,
+         changed => {
+             'zipdetails'            => '1',
+         },
+         removed => {
+         }
+     },
+     5.015007 => {
+         delta_from => 5.015006,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015008 => {
+         delta_from => 5.015007,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.015009 => {
+         delta_from => 5.015008,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.016 => {
+         delta_from => 5.015009,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017 => {
+         delta_from => 5.016003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017001 => {
+         delta_from => 5.017,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017002 => {
+         delta_from => 5.017001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.016001 => {
+         delta_from => 5.016,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017003 => {
+         delta_from => 5.017002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017004 => {
+         delta_from => 5.017003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.014003 => {
+         delta_from => 5.014002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017005 => {
+         delta_from => 5.017004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.016002 => {
+         delta_from => 5.016001,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.012005 => {
+         delta_from => 5.012004,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017006 => {
+         delta_from => 5.017005,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017007 => {
+         delta_from => 5.017006,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017008 => {
+         delta_from => 5.017007,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017009 => {
+         delta_from => 5.017008,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.014004 => {
+         delta_from => 5.014003,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.016003 => {
+         delta_from => 5.016002,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017010 => {
+         delta_from => 5.017009,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.017011 => {
+         delta_from => 5.017010,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.018000 => {
+         delta_from => 5.017011,
+         changed => {
+         },
+         removed => {
+         }
+     },
+     5.019000 => {
+         delta_from => 5.018000,
+         changed => {
+         },
+         removed => {
+             'cpan2dist'             => '1',
+             'cpanp'                 => '1',
+             'cpanp-run-perl'        => '1',
+             'pod2latex'             => '1',
+         }
+     },
+ );
+ for my $version (sort { $a <=> $b } keys %delta) {
+     my $data = $delta{$version};
+     tie %{$utilities{$version}}, 'Module::CoreList::TieHashDelta',
+         $data->{changed}, $data->{removed},
+         $data->{delta_from} ? $utilities{$data->{delta_from}} : undef;
+ }
+ # Create aliases with trailing zeros for $] use
+ $utilities{'5.000'} = $utilities{5};
+ _create_aliases(\%utilities);
+ sub _create_aliases {
+     my ($hash) = @_;
+     for my $version (keys %$hash) {
+         next unless $version >= 5.010;
+         my $padded = sprintf "%0.6f", $version;
+         # If the version in string form isn't the same as the numeric version,
+         # alias it.
+         if ($padded ne $version && $version == $padded) {
+             $hash->{$padded} = $hash->{$version};
+         }
+     }
+ }
+ 'foo';