Hello community,

here is the log from the commit of package perl-MooseX-Types-Parameterizable 
for openSUSE:Factory checked in at 2012-02-20 16:16:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-MooseX-Types-Parameterizable (Old)
 and      /work/SRC/openSUSE:Factory/.perl-MooseX-Types-Parameterizable.new 
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-MooseX-Types-Parameterizable", Maintainer is ""

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-MooseX-Types-Parameterizable/perl-MooseX-Types-Parameterizable.changes
      2012-01-05 13:49:23.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-MooseX-Types-Parameterizable.new/perl-MooseX-Types-Parameterizable.changes
 2012-02-20 16:16:17.000000000 +0100
@@ -1,0 +2,12 @@
+Mon Feb 20 09:07:26 UTC 2012 - [email protected]
+
+- remove broken test
+
+-------------------------------------------------------------------
+Fri Feb 17 11:24:26 UTC 2012 - [email protected]
+
+- updated to 0.08
+   - POD fixes (chocolateboy++)
+   - remove pointless dependency (chocolateboy++)
+
+-------------------------------------------------------------------

Old:
----
  MooseX-Types-Parameterizable-0.07.tar.gz

New:
----
  MooseX-Types-Parameterizable-0.08.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-MooseX-Types-Parameterizable.spec ++++++
--- /var/tmp/diff_new_pack.Echwh5/_old  2012-02-20 16:16:18.000000000 +0100
+++ /var/tmp/diff_new_pack.Echwh5/_new  2012-02-20 16:16:18.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-MooseX-Types-Parameterizable
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           perl-MooseX-Types-Parameterizable
-Version:        0.07
+Version:        0.08
 Release:        0
 %define cpan_name MooseX-Types-Parameterizable
 Summary:        Create your own Parameterizable Types.
@@ -36,7 +36,6 @@
 BuildRequires:  perl(MooseX::Types) >= 0.22
 BuildRequires:  perl(Test::Exception) >= 0.29
 BuildRequires:  perl(Test::More) >= 0.94
-BuildRequires:  perl(Test::Most)
 #BuildRequires: perl(CPANPLUS::Backend)
 #BuildRequires: perl(inc::Module::Install) >= 1.00
 #BuildRequires: perl(JSON)
@@ -76,34 +75,10 @@
 constraints that work similarly. See the Moose::Util::TypeConstraints
 manpage for more.
 
-Using this type constraint, you can generate new type constraints that have
-additional runtime advice, such as being able to specify maximum and
-minimum values for an Int (integer) type constraint:
-
-    subtype Range,
-        as Dict[max=>Int, min=>Int],
-        where {
-            my ($range) = @_;
-            return $range->{max} > $range->{min};
-        };
-
-    subtype RangedInt,
-        as Parameterizable[Int, Range],
-        where {
-            my ($value, $range) = @_;
-            return ($value >= $range->{min} &&
-             $value <= $range->{max});
-        };
-        
-    RangedInt([{min=>10,max=>100}])->check(50); ## OK
-    RangedInt([{min=>50, max=>75}])->check(99); ## Not OK, exceeds max
-
-This is useful since it lets you generate common patterns of type
-constraints rather than build a custom type constraint for all similar
-cases.
-
 %prep
 %setup -q -n %{cpan_name}-%{version}
+# buggy
+rm t/09-coercions-bug.t 
 
 %build
 %{__perl} Makefile.PL INSTALLDIRS=vendor

++++++ MooseX-Types-Parameterizable-0.07.tar.gz -> 
MooseX-Types-Parameterizable-0.08.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-Parameterizable-0.07/Changes 
new/MooseX-Types-Parameterizable-0.08/Changes
--- old/MooseX-Types-Parameterizable-0.07/Changes       2011-08-02 
16:04:41.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/Changes       2012-02-09 
04:01:37.000000000 +0100
@@ -1,5 +1,9 @@
 Revision history for MooseX-Types-Parameterized
 
+0.08  08 February 2012
+        - POD fixes (chocolateboy++)
+        - remove pointless dependency (chocolateboy++)
+
 0.07   02 August 2011
         - Changed the way we set a message so that we can access both value and
           parameterized type in the message.  This lets us make more useful 
error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-Parameterizable-0.07/MANIFEST 
new/MooseX-Types-Parameterizable-0.08/MANIFEST
--- old/MooseX-Types-Parameterizable-0.07/MANIFEST      2011-08-02 
16:06:47.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/MANIFEST      2012-02-09 
04:03:00.000000000 +0100
@@ -16,9 +16,6 @@
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
 inc/Pod/Markdown.pm
-lib/.DS_Store
-lib/MooseX/.DS_Store
-lib/MooseX/Meta/.DS_Store
 lib/MooseX/Meta/TypeCoercion/Parameterizable.pm
 lib/MooseX/Meta/TypeConstraint/Parameterizable.pm
 lib/MooseX/Types/Parameterizable.pm
@@ -36,3 +33,4 @@
 t/06-anonymous.t
 t/07-no-message.t
 t/08-custom-messages.t
+t/09-coercions-bug.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-Parameterizable-0.07/META.yml 
new/MooseX-Types-Parameterizable-0.08/META.yml
--- old/MooseX-Types-Parameterizable-0.07/META.yml      2011-08-02 
16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/META.yml      2012-02-09 
04:02:34.000000000 +0100
@@ -3,14 +3,14 @@
 author:
   - 'John Napiorkowski, C<< <[email protected]> >>'
 build_requires:
-  ExtUtils::MakeMaker: 6.42
+  ExtUtils::MakeMaker: 6.62
   Test::Exception: 0.29
   Test::More: 0.94
-  Test::Most: 0
 configure_requires:
-  ExtUtils::MakeMaker: 6.42
+  ExtUtils::MakeMaker: 6.62
 distribution_type: module
-generated_by: 'Module::Install version 1.01'
+dynamic_config: 1
+generated_by: 'Module::Install version 1.04'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -33,4 +33,4 @@
   homepage: http://search.cpan.org/dist/MooseX-Types-Parameterizable/
   license: http://dev.perl.org/licenses/
   repository: git://github.com/jjn1056/MooseX-Types-Parameterizable.git
-version: 0.07
+version: 0.08
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-Parameterizable-0.07/Makefile.PL 
new/MooseX-Types-Parameterizable-0.08/Makefile.PL
--- old/MooseX-Types-Parameterizable-0.07/Makefile.PL   2011-08-02 
16:01:35.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/Makefile.PL   2012-02-09 
03:59:17.000000000 +0100
@@ -17,6 +17,5 @@
 
 build_requires 'Test::More' => '0.94';
 build_requires 'Test::Exception' => '0.29';
-test_requires 'Test::Most';
 
 WriteAll;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-Parameterizable-0.07/README.mkdn 
new/MooseX-Types-Parameterizable-0.08/README.mkdn
--- old/MooseX-Types-Parameterizable-0.07/README.mkdn   2011-08-02 
16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/README.mkdn   2012-02-09 
04:02:33.000000000 +0100
@@ -21,20 +21,19 @@
         my($string, $int) = @_;
         $int >= length($string) ? 1:0;
       },
-      message { "'$_' is too long"  };
+      message { "'$_[0]' is too long (max length $_[1])" };
 
 Coerce an ArrayRef to a string via concatenation.
 
     coerce Varchar,
       from ArrayRef,
-      via { 
+      via {
         my ($arrayref, $int) = @_;
         join('', @$arrayref);
       };
 
     has 'varchar_five' => (isa=>Varchar[5], is=>'ro', coerce=>1);
     has 'varchar_ten' => (isa=>Varchar[10], is=>'ro');
-  
 
 Object created since attributes are valid
 
@@ -56,20 +55,18 @@
         varchar_five => [qw/aa bb/],  ## coerces to "aabb"
         varchar_ten => '123456789',
     );
- 
 
 See t/05-pod-examples.t for runnable versions of all POD code
-         
 
 # DESCRIPTION
 
 A [MooseX::Types](http://search.cpan.org/perldoc?MooseX::Types) library for 
creating parameterizable types.  A parameterizable
-type constraint for all intents and uses is a subclass of a parent type, but 
+type constraint for all intents and uses is a subclass of a parent type, but
 adds additional type parameters which are available to constraint callbacks
-(such as inside the 'where' clause of a type constraint definition) or in the 
+(such as inside the 'where' clause of a type constraint definition) or in the
 coercions you define for a given type constraint.
 
-If you have [Moose](http://search.cpan.org/perldoc?Moose) experience, you 
probably are familiar with the builtin 
+If you have [Moose](http://search.cpan.org/perldoc?Moose) experience, you 
probably are familiar with the builtin
 parameterizable type constraints 'ArrayRef' and 'HashRef'.  This type 
constraint
 lets you generate your own versions of parameterized constraints that work
 similarly.  See 
[Moose::Util::TypeConstraints](http://search.cpan.org/perldoc?Moose::Util::TypeConstraints)
 for more.
@@ -91,8 +88,11 @@
             my ($value, $range) = @_;
             return ($value >= $range->{min} &&
              $value <= $range->{max});
-        };
-        
+        },
+                message {
+            my ($value, $range) = @_;
+                        return "$value must be between $range->{min} and 
$range->{max} (inclusive)";
+                };
 
     RangedInt([{min=>10,max=>100}])->check(50); ## OK
     RangedInt([{min=>50, max=>75}])->check(99); ## Not OK, exceeds max
@@ -112,7 +112,7 @@
 In the above case the 'min' value is larger than the 'max', which violates the
 Range constraint.  We throw a hard error here since I think incorrect type
 parameters are most likely to be the result of a typo or other true error
-conditions.  
+conditions.
 
 If you can't accept a hard exception here, you can either trap it as advised
 above or you need to test the constraining values first, as in:
@@ -123,7 +123,6 @@
     } else {
         RangedInt($range)->check(99);
     }
-    
 
 Please note that for ArrayRef or HashRef parameterizable type constraints, as 
in the
 example above, as a convenience we automatically ref the incoming type
@@ -139,7 +138,6 @@
 Also note that if you 'chain' parameterization results with a method call like:
 
     TypeConstraint([$ob])->method;
-    
 
 You need to have the "(...)" around the ArrayRef in the Type Constraint
 parameters.  You can skip the wrapping parenthesis in the most common cases,
@@ -158,6 +156,10 @@
             my ($value, $range) = @_;
             return ($value >= $range->{min} &&
              $value =< $range->{max});
+        },
+                message {
+            my ($value, $range) = @_;
+                        return "$value must be between $range->{min} and 
$range->{max} (inclusive)";
         };
 
 Example subtype with additional constraints:
@@ -165,9 +167,8 @@
     subtype PositiveRangedInt,
         as RangedInt,
         where {
-            shift >= 0;              
+            shift >= 0;
         };
-        
 
 In this case you'd now have a parameterizable type constraint which would
 work like:
@@ -181,8 +182,6 @@
 other rule, nor can a rule 'inform' existing rules.  This is a limitation of
 the current system.  However, you could instead do the following:
 
-
-
     ## Subtype of Int for positive numbers
     subtype PositiveInt,
         as Int,
@@ -194,7 +193,6 @@
     ## subtype Range to re-parameterize Range with subtypes
     subtype PositiveRange,
         as Range[max=>PositiveInt, min=>PositiveInt];
-    
 
     ## create subtype via reparameterizing
     subtype PositiveRangedInt,
@@ -215,10 +213,9 @@
 parent type for the parameterizable type.
 
 In other words, given the example above, a type constraint of 'RangedInt' would
-have a parent of 'Int', not 'Parameterizable' and for all intends and uses you 
+have a parent of 'Int', not 'Parameterizable' and for all intends and uses you
 could stick it wherever you'd need an Int.  You can't change the parent, even
 to make it a subclass of Int.
-    
 
 ## Coercions
 
@@ -244,9 +241,9 @@
         my($string, $int) = @_;
         $int >= length($string) ? 1:0;
       },
-      message { "'$_' is too long"  };
+      message { "'$_[0]' is too long (max length $_[1])" };
 
-This is the [SYNOPSIS](#pod_SYNOPSIS) example, which creates a new 
parameterizable subtype of
+This is the ["SYNOPSIS"](#SYNOPSIS) example, which creates a new 
parameterizable subtype of
 Str which takes a single type parameter which must be an Int.  This Int is used
 to constrain the allowed length of the Str value.
 
@@ -255,9 +252,9 @@
 
     coerce Varchar,
       from Object,
-      via { "$_"; },  ## stringify the object
+      via { "$_" },  ## stringify the object
       from ArrayRef,
-      via { join '',@$_ };  ## convert array to string
+      via { join '', @$_ };  ## convert array to string
 
 This parameterizable subtype, "Varchar" itself is something you'd never use
 directly to constraint a value.  In other words you'd never do something like:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/AutoInstall.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/AutoInstall.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/AutoInstall.pm     
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/AutoInstall.pm     
2012-02-09 04:02:34.000000000 +0100
@@ -7,7 +7,7 @@
 
 use vars qw{$VERSION};
 BEGIN {
-       $VERSION = '1.03';
+       $VERSION = '1.04';
 }
 
 # special map on pre-defined feature sets
@@ -17,11 +17,14 @@
 );
 
 # various lexical flags
-my ( @Missing, @Existing,  %DisabledTests, $UnderCPAN,     $HasCPANPLUS );
+my ( @Missing, @Existing,  %DisabledTests, $UnderCPAN, $InstallDepsTarget, 
$HasCPANPLUS );
 my (
-    $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps
+    $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps,
+    $UpgradeDeps
 );
-my ( $PostambleActions, $PostambleUsed );
+my ( $PostambleActions, $PostambleActionsNoTest, $PostambleActionsUpgradeDeps,
+    $PostambleActionsUpgradeDepsNoTest, $PostambleActionsListDeps,
+    $PostambleActionsListAllDeps, $PostambleUsed, $NoTest);
 
 # See if it's a testing or non-interactive session
 _accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN ); 
@@ -31,6 +34,10 @@
     $AcceptDefault = shift;
 }
 
+sub _installdeps_target {
+    $InstallDepsTarget = shift;
+}
+
 sub missing_modules {
     return @Missing;
 }
@@ -63,6 +70,11 @@
             __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) );
             exit 0;
         }
+       elsif ( $arg =~ /^--upgradedeps=(.*)$/ ) {
+           $UpgradeDeps = 1;
+           __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) );
+           exit 0;
+       }
         elsif ( $arg =~ /^--default(?:deps)?$/ ) {
             $AcceptDefault = 1;
         }
@@ -125,7 +137,7 @@
     # check entirely since we don't want to have to load (and configure)
     # an old CPAN just for a cosmetic message
 
-    $UnderCPAN = _check_lock(1) unless $SkipInstall;
+    $UnderCPAN = _check_lock(1) unless $SkipInstall || $InstallDepsTarget;
 
     while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) {
         my ( @required, @tests, @skiptests );
@@ -207,6 +219,7 @@
                 $CheckOnly
                 or ($mandatory and $UnderCPAN)
                 or $AllDeps
+                or $InstallDepsTarget
                 or _prompt(
                     qq{==> Auto-install the }
                       . ( @required / 2 )
@@ -237,10 +250,17 @@
         }
     }
 
-    if ( @Missing and not( $CheckOnly or $UnderCPAN ) ) {
+    if ( @Missing and not( $CheckOnly or $UnderCPAN) ) {
         require Config;
-        print
-"*** Dependencies will be installed the next time you type 
'$Config::Config{make}'.\n";
+        my $make = $Config::Config{make};
+        if ($InstallDepsTarget) {
+            print
+"*** To install dependencies type '$make installdeps' or '$make 
installdeps_notest'.\n";
+        }
+        else {
+            print
+"*** Dependencies will be installed the next time you type '$make'.\n";
+        }
 
         # make an educated guess of whether we'll need root permission.
         print "    (You may need to do that as the 'root' user.)\n"
@@ -271,6 +291,10 @@
 sub _check_lock {
     return unless @Missing or @_;
 
+    if ($ENV{PERL5_CPANM_IS_RUNNING}) {
+        return _running_under('cpanminus');
+    }
+
     my $cpan_env = $ENV{PERL5_CPAN_IS_RUNNING};
 
     if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) {
@@ -332,6 +356,11 @@
         }
     }
 
+    if ($UpgradeDeps) {
+       push @modules, @installed;
+       @installed = ();
+    }
+
     return @installed unless @modules;  # nothing to do
     return @installed if _check_lock(); # defer to the CPAN shell
 
@@ -463,6 +492,11 @@
                        } else {
                                die "*** Cannot convert option $key = '$value' 
to CPANPLUS version.\n";
                        }
+                       push @config, 'prereqs', $value;
+               } elsif ( $key eq 'force' ) {
+                   push @config, $key, $value;
+               } elsif ( $key eq 'notest' ) {
+                   push @config, 'skiptest', $value;
                } else {
                        die "*** Cannot convert option $key to CPANPLUS 
version.\n";
                }
@@ -497,10 +531,14 @@
     # set additional options
     while ( my ( $opt, $arg ) = splice( @config, 0, 2 ) ) {
         ( $args{$opt} = $arg, next )
-          if $opt =~ /^force$/;    # pseudo-option
+          if $opt =~ /^(?:force|notest)$/;    # pseudo-option
         $CPAN::Config->{$opt} = $arg;
     }
 
+    if ($args{notest} && (not CPAN::Shell->can('notest'))) {
+       die "Your version of CPAN is too old to support the 'notest' pragma";
+    }
+
     local $CPAN::Config->{prerequisites_policy} = 'follow';
 
     while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) {
@@ -519,8 +557,16 @@
                 delete $INC{$inc};
             }
 
-            my $rv = $args{force} ? CPAN::Shell->force( install => $pkg )
-                                  : CPAN::Shell->install($pkg);
+            my $rv = do {
+               if ($args{force}) {
+                   CPAN::Shell->force( install => $pkg )
+               } elsif ($args{notest}) {
+                   CPAN::Shell->notest( install => $pkg )
+               } else {
+                   CPAN::Shell->install($pkg)
+               }
+           };
+
             $rv ||= eval {
                 $CPAN::META->instance( 'CPAN::Distribution', $obj->cpan_file, )
                   ->{install}
@@ -763,6 +809,35 @@
         : "\$(NOECHO) \$(NOOP)"
     );
 
+    my $deps_list = join( ',', @Missing, @Existing );
+
+    $PostambleActionsUpgradeDeps =
+        "\$(PERL) $0 --config=$config --upgradedeps=$deps_list";
+
+    my $config_notest =
+      join( ',', (UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config}),
+         'notest', 1 )
+      if $Config;
+
+    $PostambleActionsNoTest = (
+        ($missing and not $UnderCPAN)
+        ? "\$(PERL) $0 --config=$config_notest --installdeps=$missing"
+        : "\$(NOECHO) \$(NOOP)"
+    );
+
+    $PostambleActionsUpgradeDepsNoTest =
+        "\$(PERL) $0 --config=$config_notest --upgradedeps=$deps_list";
+
+    $PostambleActionsListDeps =
+        '@$(PERL) -le "print for @ARGV" '
+            . join(' ', map $Missing[$_], grep $_ % 2 == 0, 0..$#Missing);
+
+    my @all = (@Missing, @Existing);
+
+    $PostambleActionsListAllDeps =
+        '@$(PERL) -le "print for @ARGV" '
+            . join(' ', map $all[$_], grep $_ % 2 == 0, 0..$#all);
+
     return %args;
 }
 
@@ -797,11 +872,15 @@
 
 sub postamble {
     $PostambleUsed = 1;
+    my $fragment;
 
-    return <<"END_MAKE";
+    $fragment .= <<"AUTO_INSTALL" if !$InstallDepsTarget;
 
 config :: installdeps
 \t\$(NOECHO) \$(NOOP)
+AUTO_INSTALL
+
+    $fragment .= <<"END_MAKE";
 
 checkdeps ::
 \t\$(PERL) $0 --checkdeps
@@ -809,12 +888,28 @@
 installdeps ::
 \t$PostambleActions
 
+installdeps_notest ::
+\t$PostambleActionsNoTest
+
+upgradedeps ::
+\t$PostambleActionsUpgradeDeps
+
+upgradedeps_notest ::
+\t$PostambleActionsUpgradeDepsNoTest
+
+listdeps ::
+\t$PostambleActionsListDeps
+
+listalldeps ::
+\t$PostambleActionsListAllDeps
+
 END_MAKE
 
+    return $fragment;
 }
 
 1;
 
 __END__
 
-#line 1071
+#line 1178
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/AutoInstall.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/AutoInstall.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/AutoInstall.pm     
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/AutoInstall.pm     
2012-02-09 04:02:33.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
@@ -73,6 +73,17 @@
     );
 }
 
+sub installdeps_target {
+    my ($self, @args) = @_;
+
+    $self->include('Module::AutoInstall');
+    require Module::AutoInstall;
+
+    Module::AutoInstall::_installdeps_target(1);
+
+    $self->auto_install(@args);
+}
+
 sub auto_install_now {
     my $self = shift;
     $self->auto_install(@_);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Base.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Base.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Base.pm    
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Base.pm    
2012-02-09 04:02:33.000000000 +0100
@@ -4,7 +4,7 @@
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
 }
 
 # Suspend handler for "redefined" warnings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Can.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Can.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Can.pm     
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Can.pm     
2012-02-09 04:02:34.000000000 +0100
@@ -9,7 +9,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Fetch.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Fetch.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Fetch.pm   
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Fetch.pm   
2012-02-09 04:02:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Include.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Include.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Include.pm 
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Include.pm 
2012-02-09 04:02:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Makefile.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Makefile.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Makefile.pm        
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Makefile.pm        
2012-02-09 04:02:33.000000000 +0100
@@ -8,7 +8,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
@@ -219,14 +219,14 @@
                # an underscore, even though its own version may contain one!
                # Hence the funny regexp to get rid of it.  See RT #35800
                # for details.
-               my $v = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/;
+               my ($v) = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/;
                $self->build_requires(     'ExtUtils::MakeMaker' => $v );
                $self->configure_requires( 'ExtUtils::MakeMaker' => $v );
        } else {
                # Allow legacy-compatibility with 5.005 by depending on the
                # most recent EU:MM that supported 5.005.
-               $self->build_requires(     'ExtUtils::MakeMaker' => 6.42 );
-               $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 );
+               $self->build_requires(     'ExtUtils::MakeMaker' => 6.36 );
+               $self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 );
        }
 
        # Generate the MakeMaker params
@@ -241,7 +241,6 @@
 'all_from' if you prefer) in Makefile.PL.
 EOT
 
-       $DB::single = 1;
        if ( $self->tests ) {
                my @tests = split ' ', $self->tests;
                my %seen;
@@ -412,4 +411,4 @@
 
 __END__
 
-#line 541
+#line 540
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/ManifestSkip.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/ManifestSkip.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/ManifestSkip.pm    
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/ManifestSkip.pm    
2012-02-09 04:02:33.000000000 +0100
@@ -9,7 +9,7 @@
 # - Module::Manifest::Skip
 
 package Module::Install::ManifestSkip;
-use 5.008003;
+use 5.008001;
 use strict;
 use warnings;
 
@@ -19,7 +19,7 @@
 use Module::Manifest::Skip 0.10 ();
 ";
 
-our $VERSION = '0.19';
+our $VERSION = '0.20';
 our $AUTHOR_ONLY = 1;
 
 my $skip_file = "MANIFEST.SKIP";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Metadata.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Metadata.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Metadata.pm        
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Metadata.pm        
2012-02-09 04:02:33.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
@@ -151,15 +151,21 @@
 sub install_as_vendor { $_[0]->installdirs('vendor') }
 
 sub dynamic_config {
-       my $self = shift;
-       unless ( @_ ) {
-               warn "You MUST provide an explicit true/false value to 
dynamic_config\n";
-               return $self;
+       my $self  = shift;
+       my $value = @_ ? shift : 1;
+       if ( $self->{values}->{dynamic_config} ) {
+               # Once dynamic we never change to static, for safety
+               return 0;
        }
-       $self->{values}->{dynamic_config} = $_[0] ? 1 : 0;
+       $self->{values}->{dynamic_config} = $value ? 1 : 0;
        return 1;
 }
 
+# Convenience command
+sub static_config {
+       shift->dynamic_config(0);
+}
+
 sub perl_version {
        my $self = shift;
        return $self->{values}->{perl_version} unless @_;
@@ -170,7 +176,7 @@
        # Normalize the version
        $version = $self->_perl_version($version);
 
-       # We don't support the reall old versions
+       # We don't support the really old versions
        unless ( $version >= 5.005 ) {
                die "Module::Install only supports 5.005 or newer (use 
ExtUtils::MakeMaker)\n";
        }
@@ -582,7 +588,7 @@
 sub requires_from {
        my $self     = shift;
        my $content  = Module::Install::_readperl($_[0]);
-       my @requires = $content =~ 
m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
+       my @requires = $content =~ 
m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg;
        while ( @requires ) {
                my $module  = shift @requires;
                my $version = shift @requires;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Win32.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Win32.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/Win32.pm   
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/Win32.pm   
2012-02-09 04:02:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/WriteAll.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/WriteAll.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install/WriteAll.pm        
2011-08-02 16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install/WriteAll.pm        
2012-02-09 04:02:34.000000000 +0100
@@ -6,7 +6,7 @@
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '1.01';
+       $VERSION = '1.04';
        @ISA     = qw{Module::Install::Base};
        $ISCORE  = 1;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Module/Install.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Module/Install.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Module/Install.pm 2011-08-02 
16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Module/Install.pm 2012-02-09 
04:02:33.000000000 +0100
@@ -31,7 +31,7 @@
        # This is not enforced yet, but will be some time in the next few
        # releases once we can make sure it won't clash with custom
        # Module::Install extensions.
-       $VERSION = '1.01';
+       $VERSION = '1.04';
 
        # Storage for the pseudo-singleton
        $MAIN    = undef;
@@ -451,7 +451,7 @@
 }
 
 sub _cmp ($$) {
-       _version($_[0]) <=> _version($_[1]);
+       _version($_[1]) <=> _version($_[2]);
 }
 
 # Cloned from Params::Util::_CLASS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/inc/Pod/Markdown.pm 
new/MooseX-Types-Parameterizable-0.08/inc/Pod/Markdown.pm
--- old/MooseX-Types-Parameterizable-0.07/inc/Pod/Markdown.pm   2011-08-02 
16:06:43.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/inc/Pod/Markdown.pm   2012-02-09 
04:02:33.000000000 +0100
@@ -1,14 +1,27 @@
 #line 1
+# vim: set ts=4 sts=4 sw=4 expandtab smarttab:
+#
+# This file is part of Pod-Markdown
+#
+# This software is copyright (c) 2004 by Marcel Gruenauer.
+#
+# This is free software; you can redistribute it and/or modify it under
+# the same terms as the Perl 5 programming language system itself.
+#
 use 5.008;
 use strict;
 use warnings;
 
 package Pod::Markdown;
+{
+  $Pod::Markdown::VERSION = '1.200000';
+}
 BEGIN {
-  $Pod::Markdown::VERSION = '1.110730';
+  $Pod::Markdown::AUTHORITY = 'cpan:RWSTAUNER';
 }
 # ABSTRACT: Convert POD to Markdown
 use parent qw(Pod::Parser);
+use Pod::ParseLink (); # core
 
 sub initialize {
     my $self = shift;
@@ -43,14 +56,10 @@
 sub _build_markdown_head {
     my $parser    = shift;
     my $data      = $parser->_private;
-    my $paragraph = '';
-    if (defined $data->{Title}) {
-        $paragraph .= sprintf '[[meta title="%s"]]', $data->{Title};
-    }
-    if (defined $data->{Author}) {
-        $paragraph .= "\n" . sprintf '[[meta author="%s"]]', $data->{Author};
-    }
-    return $paragraph;
+    return join "\n",
+        map  { qq![[meta \l$_="$data->{$_}"]]! }
+        grep { defined $data->{$_} }
+        qw( Title Author );
 }
 
 sub _save {
@@ -126,7 +135,7 @@
         $data->{searching} = '';
     } elsif ($command =~ m{item}xms) {
         $paragraph = $parser->interpolate($paragraph, $line_num);
-        $paragraph =~ s{^\h* \* \h*}{}xms;
+        $paragraph =~ s{^[ \t]* \* [ \t]*}{}xms;
 
         if ($data->{searching} eq 'listpara') {
             $data->{searching} = 'listheadhuddled';
@@ -146,6 +155,28 @@
 
 sub verbatim {
     my ($parser, $paragraph) = @_;
+
+    # NOTE: perlpodspec says parsers should expand tabs by default
+    # NOTE: Apparently Pod::Parser does not.  should we?
+    # NOTE: this might be s/^\t/" " x 8/e, but what about tabs inside the para?
+
+    # POD verbatim can start with any number of spaces (or tabs)
+    # markdown should be 4 spaces (or a tab)
+    # so indent any paragraphs so that all lines start with at least 4 spaces
+    my @lines = split /\n/, $paragraph;
+    my $indent = ' ' x 4;
+    foreach my $line ( @lines ){
+        next unless $line =~ m/^( +)/;
+        # find the smallest indentation
+        $indent = $1 if length($1) < length($indent);
+    }
+    if( (my $smallest = length($indent)) < 4 ){
+        # invert to get what needs to be prepended
+        $indent = ' ' x (4 - $smallest);
+        # leave tabs alone
+        $paragraph = join "\n", map { /^\t/ ? $_ : $indent . $_ } @lines;
+    }
+
     $parser->_save($paragraph);
 }
 
@@ -179,48 +210,92 @@
 }
 
 sub interior_sequence {
-    my ($seq_command, $seq_argument, $pod_seq) = @_[1..3];
+    my ($self, $seq_command, $seq_argument, $pod_seq) = @_;
+
+    # nested links are not allowed
+    return sprintf '%s<%s>', $seq_command, $seq_argument
+        if $seq_command eq 'L' && $self->_private->{InsideLink};
+
+    my $i = 2;
     my %interiors = (
-        'I' => sub { return '_' . $_[1] . '_' },      # italic
-        'B' => sub { return '__' . $_[1] . '__' },    # bold
-        'C' => sub { return '`' . $_[1] . '`' },      # monospace
-        'F' => sub { return '`' . $_[1] . '`' },      # system path
-        'S' => sub { return '`' . $_[1] . '`' },      # code
+        'I' => sub { return '_'  . $_[$i] . '_'  },      # italic
+        'B' => sub { return '__' . $_[$i] . '__' },      # bold
+        'C' => sub { return '`'  . $_[$i] . '`'  },      # monospace
+        'F' => sub { return '`'  . $_[$i] . '`'  },      # system path
+        # non-breaking space
+        'S' => sub {
+            (my $s = $_[$i]) =~ s/ /&nbsp;/g;
+            return $s;
+        },
         'E' => sub {
-            my $charname = $_[1];
+            my $charname = $_[$i];
             return '<' if $charname eq 'lt';
             return '>' if $charname eq 'gt';
             return '|' if $charname eq 'verbar';
             return '/' if $charname eq 'sol';
+
+            # convert legacy charnames to more modern ones (see perlpodspec)
+            $charname =~ s/\A([lr])chevron\z/${1}aquo/;
+
+            return "&#$1;" if $charname =~ /^0(x[0-9a-fA-Z]+)$/;
+
+            $charname = oct($charname) if $charname =~ /^0\d+$/;
+
+            return "&#$charname;"      if $charname =~ /^\d+$/;
+
             return "&$charname;";
         },
         'L' => \&_resolv_link,
+        'X' => sub { '' },
+        'Z' => sub { '' },
     );
     if (exists $interiors{$seq_command}) {
         my $code = $interiors{$seq_command};
-        return $code->($seq_command, $seq_argument, $pod_seq);
+        return $code->($self, $seq_command, $seq_argument, $pod_seq);
     } else {
         return sprintf '%s<%s>', $seq_command, $seq_argument;
     }
 }
 
 sub _resolv_link {
-    my ($cmd, $arg) = @_;
-    my $text = $arg =~ s"^(.+?)\|"" ? $1 : '';
+    my ($self, $cmd, $arg) = @_;
+
+    local $self->_private->{InsideLink} = 1;
 
-    if ($arg =~ m{^http|ftp}xms) { # direct link to a URL
-        $text ||= $arg;
-        return sprintf '[%s](%s)', $text, $arg;
-    } elsif ($arg =~ m{^/(.*)$}) {
-        $text ||= $1;
-        $text = $1;
-        return "[$text](\#pod_$1)";
-    } elsif ($arg =~ m{^(\w+(?:::\w+)*)$}) {
-        $text ||= $1;
-        return "[$text](http://search.cpan.org/perldoc?$1)";
+    my ($text, $inferred, $name, $section, $type) =
+      # perlpodspec says formatting codes can occur in all parts of an L<>
+      map { $_ && $self->interpolate($_, 1) }
+      Pod::ParseLink::parselink($arg);
+    my $url = '';
+
+    # TODO: make url prefixes configurable
+
+    if ($type eq 'url') {
+        $url = $name;
+    } elsif ($type eq 'man') {
+        # stolen from Pod::Simple::(X)HTML
+        my ($page, $part) = $name =~ /\A([^(]+)(?:[(](\S*)[)])?/;
+        $url = 'http://man.he.net/man' . ($part || 1) . '/' . ($page || $name);
     } else {
+        if ($name) {
+            $url = 'http://search.cpan.org/perldoc?' . $name;
+        }
+        if ($section){
+            # TODO: sites/pod formatters differ on how to transform the section
+            # TODO: we could do it according to specified url prefix or pod 
formatter
+            # TODO: or allow a coderef?
+            # TODO: (Pod::Simple::XHTML:idify() for metacpan)
+            # TODO: (Pod::Simple::HTML 
section_escape/unicode_escape_url/section_url_escape for s.c.o.)
+            $url .= '#' . $section;
+        }
+    }
+
+    # if we don't know how to handle the url just print the pod back out
+    if (!$url) {
         return sprintf '%s<%s>', $cmd, $arg;
     }
+
+    return sprintf '[%s](%s)', ($text || $inferred), $url;
 }
 
 sub format_header {
@@ -232,5 +307,5 @@
 
 
 __END__
-#line 341
+#line 481
 
Files old/MooseX-Types-Parameterizable-0.07/lib/.DS_Store and 
new/MooseX-Types-Parameterizable-0.08/lib/.DS_Store differ
Files old/MooseX-Types-Parameterizable-0.07/lib/MooseX/.DS_Store and 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/.DS_Store differ
Files old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Meta/.DS_Store and 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Meta/.DS_Store differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Meta/TypeCoercion/Parameterizable.pm
 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Meta/TypeCoercion/Parameterizable.pm
--- 
old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Meta/TypeCoercion/Parameterizable.pm
       2010-06-28 13:50:30.000000000 +0200
+++ 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Meta/TypeCoercion/Parameterizable.pm
       2012-02-09 03:59:17.000000000 +0100
@@ -12,12 +12,12 @@
 
 Coercion Meta Class, intended to make sure coercions work correctly with
 parameterized types.  You probably won't consume or subclass this class 
directly
- 
+
 =head1 METHODS
 
 This class defines the following methods.
 
-=head add_type_coercions
+=head2 add_type_coercions
 
 method modification to throw exception should we try to add a coercion on a
 parameterizable type that is already defined by a constraining value.  We do
@@ -36,7 +36,6 @@
     }
 };
 
-
 ## These two are here until I can merge change upstream to Moose.  These are 
two
 ## very minor changes we can probably just put into Moose without breaking 
stuff.
 ## Hopefully can can eventually stop doing this.
@@ -54,8 +53,8 @@
     while (@coercion_map) {
         my ($constraint_name, $action) = splice(@coercion_map, 0, 2);
 
-        my $type_constraint = ref $constraint_name 
-                            ? $constraint_name 
+        my $type_constraint = ref $constraint_name
+                            ? $constraint_name
                             : 
Moose::Util::TypeConstraints::find_or_parse_type_constraint($constraint_name);
 
         unless ( defined $type_constraint ) {
@@ -74,7 +73,7 @@
             my ($constraint, $converter) = @$coercion;
             if ($constraint->($thing)) {
                 local $_ = $thing;
-                return $converter->($thing, @_); ## <== Here also we pass @_ 
which Moose doesn't 
+                return $converter->($thing, @_); ## <== Here also we pass @_ 
which Moose doesn't
             }
         }
         return $thing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Meta/TypeConstraint/Parameterizable.pm
 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Meta/TypeConstraint/Parameterizable.pm
--- 
old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Meta/TypeConstraint/Parameterizable.pm
     2011-08-02 15:46:00.000000000 +0200
+++ 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Meta/TypeConstraint/Parameterizable.pm
     2012-02-09 03:59:17.000000000 +0100
@@ -7,7 +7,7 @@
 use Scalar::Util qw(blessed);
 use Data::Dump;
 use Digest::MD5;
-            
+
 extends 'Moose::Meta::TypeConstraint';
 
 =head1 NAME
@@ -41,7 +41,6 @@
     required=>1,
 );
 
-
 =head2 constraining_value_type_constraint
 
 This is a type constraint which defines what kind of value is allowed to be the
@@ -81,19 +80,19 @@
 Do some post build stuff, mostly make sure we set the correct coercion object.
 
 =cut
- 
+
 around 'new' => sub {
     my ($new, $class, @args) = @_;
     my $self = $class->$new(@args);
     my $coercion = 
MooseX::Meta::TypeCoercion::Parameterizable->new(type_constraint => $self);
-    $self->coercion($coercion);    
+    $self->coercion($coercion);
     return $self;
 };
 
 =head2 parameterize (@args)
 
 Given a ref of type constraints, create a parameterized constraint
-    
+
 =cut
 
 sub parameterize {
@@ -102,25 +101,25 @@
 
     Moose->throw_error("$self already has a constraining value.") if
      $self->has_constraining_value;
-         
+
     if(blessed $_[0] && $_[0]->isa('Moose::Meta::TypeConstraint')) {
         my $arg1 = shift @_;
-         
+
         if(blessed $_[0] && $_[0]->isa('Moose::Meta::TypeConstraint')) {
             my $arg2 = shift @_ || $self->constraining_value_type_constraint;
-            
+
             ## TODO fix this crap!
             Moose->throw_error("$arg2 is not a type constraint")
              unless $arg2->isa('Moose::Meta::TypeConstraint');
-             
+
             Moose->throw_error("$arg1 is not a type of: 
".$self->parent_type_constraint->name)
              unless $arg1->is_a_type_of($self->parent_type_constraint);
 
             Moose->throw_error("$arg2 is not a type of: 
".$self->constraining_value_type_constraint->name)
              unless 
$arg2->is_a_type_of($self->constraining_value_type_constraint);
-             
+
             Moose->throw_error('Too Many Args!  Two are allowed.') if @_;
-            
+
             my $name = $self->_generate_subtype_name($arg1, $arg2);
             if(my $exists = 
Moose::Util::TypeConstraints::find_type_constraint($name)) {
                 return $exists;
@@ -138,7 +137,7 @@
         } else {
             Moose->throw_error("$arg1 is not a type of: 
".$self->constraining_value_type_constraint->name)
              unless 
$arg1->is_a_type_of($self->constraining_value_type_constraint);
-             
+
             my $name = 
$self->_generate_subtype_name($self->parent_type_constraint, $arg1);
             if(my $exists = 
Moose::Util::TypeConstraints::find_type_constraint($name)) {
                 return $exists;
@@ -163,7 +162,7 @@
                     $args = {@_};
                 } else {
                     $args = [@_];
-                }                
+                }
             } else {
                 $args = $_[0];
             }
@@ -172,14 +171,14 @@
             ## TODO:  Is there a use case for parameterizing null or undef?
             Moose->throw_error('Cannot Parameterize null values.');
         }
-        
+
         if(my $err = 
$self->constraining_value_type_constraint->validate($args)) {
             Moose->throw_error($err);
         } else {
 
             my $sig = $args;
             if(ref $sig) {
-                $sig = Digest::MD5::md5_hex(Data::Dump::dump($args));          
     
+                $sig = Digest::MD5::md5_hex(Data::Dump::dump($args));
             }
             my $name = $self->name."[$sig]";
             if(my $exists = 
Moose::Util::TypeConstraints::find_type_constraint($name)) {
@@ -196,7 +195,7 @@
                 );
             }
         }
-    } 
+    }
 }
 
 =head2 _generate_subtype_name
@@ -242,17 +241,17 @@
 
 around 'equals' => sub {
     my ( $equals, $self, $type_or_name ) = @_;
-    
+
     my $other = defined $type_or_name ?
       Moose::Util::TypeConstraints::find_type_constraint($type_or_name) :
       Moose->throw_error("Can't call $self ->equals without a parameter");
-      
+
     Moose->throw_error("$type_or_name is not a registered Type")
      unless $other;
-     
+
     if(my $parent = $other->parent) {
         return $self->$equals($other)
-         || $self->parent->equals($parent);        
+         || $self->parent->equals($parent);
     } else {
         return $self->$equals($other);
     }
@@ -271,10 +270,10 @@
     my $other = defined $type_or_name ?
       Moose::Util::TypeConstraints::find_type_constraint($type_or_name) :
       Moose->throw_error("Can't call $self ->equals without a parameter");
-      
+
     Moose->throw_error("$type_or_name is not a registered Type")
      unless $other;
-     
+
     return $self->$is_subtype_of($other)
         || $self->parent_type_constraint->is_subtype_of($other);
 
@@ -322,8 +321,8 @@
     my $constraining;
     if($self->has_constraining_value) {
         $constraining = $self->constraining_value;
-    } 
-    
+    }
+
     return sub {
         my @local_args = @_;
         if(my $err = 
$self->constraining_value_type_constraint->validate($constraining)) {
@@ -351,12 +350,12 @@
             return $coerced;
         } else {
             my $parent = $self->parent;
-            return $parent->coerce(@args); 
+            return $parent->coerce(@args);
         }
     } else {
         my $parent = $self->parent;
-        return $parent->coerce(@args); 
-    } 
+        return $parent->coerce(@args);
+    }
 };
 
 =head1 SEE ALSO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Types/Parameterizable.pm 
new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Types/Parameterizable.pm
--- old/MooseX-Types-Parameterizable-0.07/lib/MooseX/Types/Parameterizable.pm   
2011-08-02 16:04:53.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/lib/MooseX/Types/Parameterizable.pm   
2012-02-09 04:01:29.000000000 +0100
@@ -2,7 +2,7 @@
 
 use 5.008;
 
-our $VERSION   = '0.07';
+our $VERSION   = '0.08';
 $VERSION = eval $VERSION;
 
 use Moose::Util::TypeConstraints;
@@ -32,20 +32,20 @@
         my($string, $int) = @_;
         $int >= length($string) ? 1:0;
       },
-      message { "'$_' is too long"  };
+      message { "'$_[0]' is too long (max length $_[1])" };
 
 Coerce an ArrayRef to a string via concatenation.
 
     coerce Varchar,
       from ArrayRef,
-      via { 
+      via {
         my ($arrayref, $int) = @_;
         join('', @$arrayref);
       };
 
     has 'varchar_five' => (isa=>Varchar[5], is=>'ro', coerce=>1);
     has 'varchar_ten' => (isa=>Varchar[10], is=>'ro');
-  
+
 Object created since attributes are valid
 
     my $object1 = __PACKAGE__->new(
@@ -66,18 +66,18 @@
         varchar_five => [qw/aa bb/],  ## coerces to "aabb"
         varchar_ten => '123456789',
     );
- 
+
 See t/05-pod-examples.t for runnable versions of all POD code
-         
+
 =head1 DESCRIPTION
 
 A L<MooseX::Types> library for creating parameterizable types.  A 
parameterizable
-type constraint for all intents and uses is a subclass of a parent type, but 
+type constraint for all intents and uses is a subclass of a parent type, but
 adds additional type parameters which are available to constraint callbacks
-(such as inside the 'where' clause of a type constraint definition) or in the 
+(such as inside the 'where' clause of a type constraint definition) or in the
 coercions you define for a given type constraint.
 
-If you have L<Moose> experience, you probably are familiar with the builtin 
+If you have L<Moose> experience, you probably are familiar with the builtin
 parameterizable type constraints 'ArrayRef' and 'HashRef'.  This type 
constraint
 lets you generate your own versions of parameterized constraints that work
 similarly.  See L<Moose::Util::TypeConstraints> for more.
@@ -99,8 +99,12 @@
             my ($value, $range) = @_;
             return ($value >= $range->{min} &&
              $value <= $range->{max});
-        };
-        
+        },
+                message {
+            my ($value, $range) = @_;
+                        return "$value must be between $range->{min} and 
$range->{max} (inclusive)";
+                };
+
     RangedInt([{min=>10,max=>100}])->check(50); ## OK
     RangedInt([{min=>50, max=>75}])->check(99); ## Not OK, exceeds max
 
@@ -119,7 +123,7 @@
 In the above case the 'min' value is larger than the 'max', which violates the
 Range constraint.  We throw a hard error here since I think incorrect type
 parameters are most likely to be the result of a typo or other true error
-conditions.  
+conditions.
 
 If you can't accept a hard exception here, you can either trap it as advised
 above or you need to test the constraining values first, as in:
@@ -130,7 +134,7 @@
     } else {
         RangedInt($range)->check(99);
     }
-    
+
 Please note that for ArrayRef or HashRef parameterizable type constraints, as 
in the
 example above, as a convenience we automatically ref the incoming type
 parameters, so that the above could also be written as:
@@ -145,7 +149,7 @@
 Also note that if you 'chain' parameterization results with a method call like:
 
     TypeConstraint([$ob])->method;
-    
+
 You need to have the "(...)" around the ArrayRef in the Type Constraint
 parameters.  You can skip the wrapping parenthesis in the most common cases,
 such as when you use the type constraint in the options section of a L<Moose>
@@ -163,6 +167,10 @@
             my ($value, $range) = @_;
             return ($value >= $range->{min} &&
              $value =< $range->{max});
+        },
+                message {
+            my ($value, $range) = @_;
+                        return "$value must be between $range->{min} and 
$range->{max} (inclusive)";
         };
 
 Example subtype with additional constraints:
@@ -170,9 +178,9 @@
     subtype PositiveRangedInt,
         as RangedInt,
         where {
-            shift >= 0;              
+            shift >= 0;
         };
-        
+
 In this case you'd now have a parameterizable type constraint which would
 work like:
 
@@ -185,7 +193,6 @@
 other rule, nor can a rule 'inform' existing rules.  This is a limitation of
 the current system.  However, you could instead do the following:
 
-
     ## Subtype of Int for positive numbers
     subtype PositiveInt,
         as Int,
@@ -197,7 +204,7 @@
     ## subtype Range to re-parameterize Range with subtypes
     subtype PositiveRange,
         as Range[max=>PositiveInt, min=>PositiveInt];
-    
+
     ## create subtype via reparameterizing
     subtype PositiveRangedInt,
         as RangedInt[PositiveRange];
@@ -217,10 +224,10 @@
 parent type for the parameterizable type.
 
 In other words, given the example above, a type constraint of 'RangedInt' would
-have a parent of 'Int', not 'Parameterizable' and for all intends and uses you 
+have a parent of 'Int', not 'Parameterizable' and for all intends and uses you
 could stick it wherever you'd need an Int.  You can't change the parent, even
 to make it a subclass of Int.
-    
+
 =head2 Coercions
 
 A type coercion is a rule that allows you to transform one type from one or
@@ -245,7 +252,7 @@
         my($string, $int) = @_;
         $int >= length($string) ? 1:0;
       },
-      message { "'$_' is too long"  };
+      message { "'$_[0]' is too long (max length $_[1])" };
 
 This is the L</SYNOPSIS> example, which creates a new parameterizable subtype 
of
 Str which takes a single type parameter which must be an Int.  This Int is used
@@ -256,9 +263,9 @@
 
     coerce Varchar,
       from Object,
-      via { "$_"; },  ## stringify the object
+      via { "$_" },  ## stringify the object
       from ArrayRef,
-      via { join '',@$_ };  ## convert array to string
+      via { join '', @$_ };  ## convert array to string
 
 This parameterizable subtype, "Varchar" itself is something you'd never use
 directly to constraint a value.  In other words you'd never do something like:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/t/05-pod-examples.t 
new/MooseX-Types-Parameterizable-0.08/t/05-pod-examples.t
--- old/MooseX-Types-Parameterizable-0.07/t/05-pod-examples.t   2010-06-25 
16:38:46.000000000 +0200
+++ new/MooseX-Types-Parameterizable-0.08/t/05-pod-examples.t   2011-09-05 
23:15:52.000000000 +0200
@@ -17,7 +17,7 @@
         my($string, $int) = @_;
         $int >= length($string) ? 1:0;
       },
-      message { "'$_' is too long"  };
+      message { "'$_[0]' is too long (max length $_[1])" };
 
     coerce Varchar,
       from ArrayRef,
@@ -52,7 +52,7 @@
     };
 
     Test::More::ok $@, 'There was an error';
-    Test::More::like $@, qr('12345678' is too long), 'Correct custom error';
+    Test::More::like $@, qr{'12345678' is too long \(max length 5\)}, 'Correct 
custom error';
 
     my $object3 = __PACKAGE__->new(
         varchar_five => [qw/aa bb/],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-Parameterizable-0.07/t/09-coercions-bug.t 
new/MooseX-Types-Parameterizable-0.08/t/09-coercions-bug.t
--- old/MooseX-Types-Parameterizable-0.07/t/09-coercions-bug.t  1970-01-01 
01:00:00.000000000 +0100
+++ new/MooseX-Types-Parameterizable-0.08/t/09-coercions-bug.t  2011-09-08 
00:01:55.000000000 +0200
@@ -0,0 +1,77 @@
+package Person;
+
+use Test::More;
+
+use Moose;
+use MooseX::Types::Parameterizable qw(Parameterizable);
+use MooseX::Types::Moose qw(Int Str HashRef ArrayRef);
+use MooseX::Types -declare=>[qw(
+    Varchar InfoHash OlderThanAge
+)];
+
+
+subtype Varchar,
+as Parameterizable[Str,Int],
+where {
+  my($string, $int) = @_;
+  $int >= length($string) ? 1:0;
+},
+message { "'$_[0]' is too long (max length $_[1])" };
+
+coerce Varchar,
+from ArrayRef,
+via { 
+  my ($arrayref, $int) = @_;
+  my $str = join('', @$arrayref);
+#  die $str;
+  return $str;
+};
+
+subtype( InfoHash,
+as HashRef[Int],
+where {
+    defined $_->{older_than};
+}),
+
+subtype( OlderThanAge,
+as Parameterizable[Int, InfoHash],
+where {
+    my ($value, $dict) = @_;
+    return $value > $dict->{older_than} ? 1:0;
+});
+
+coerce OlderThanAge,
+from HashRef,
+via {
+    my ($hashref, $constraining_value) = @_;
+    return scalar(keys(%$hashref));
+},
+from ArrayRef,
+via {
+    my ($arrayref, $constraining_value) = @_;
+    my $age;
+    $age += $_ for @$arrayref;
+    return $age;
+};
+
+
+my $olderthan = OlderThanAge[older_than=>2];
+my $varchar = Varchar[5];
+
+has age=>(is=>'rw', isa=>$olderthan, coerce=>1);
+has name=>(is=>'rw', isa=>$varchar,coerce=>1);
+
+ok my $person = Person->new,
+  'Created a testable object';
+
+ok $person->name('john'), 'john is less than 5 chars';
+is $person->name([qw/j o h n/]), 'john', 'j o h n is john';
+
+ok $person->age(3),
+  '3 is older than 2';
+is $person->age([1..10]), 55,
+  'Coerce ArrayRef works';
+is $person->age({a=>5,b=>6,c=>7,d=>8}), 4,
+  'Coerce HashRef works';
+
+done_testing;

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to