r49990 - in /branches/upstream/libmousex-types-perl/current: ./ inc/Module/Install/ inc/Scalar/ inc/Test/ lib/MouseX/ lib/MouseX/Types/ t/

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Sun Jan 3 02:18:14 UTC 2010


Author: jawnsy-guest
Date: Sun Jan  3 02:18:05 2010
New Revision: 49990

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=49990
Log:
[svn-upgrade] Integrating new upstream version, libmousex-types-perl (0.03)

Added:
    branches/upstream/libmousex-types-perl/current/t/004-parametarization.t   (with props)
Removed:
    branches/upstream/libmousex-types-perl/current/inc/Module/Install/Include.pm
    branches/upstream/libmousex-types-perl/current/inc/Scalar/
    branches/upstream/libmousex-types-perl/current/inc/Test/
Modified:
    branches/upstream/libmousex-types-perl/current/Changes
    branches/upstream/libmousex-types-perl/current/MANIFEST
    branches/upstream/libmousex-types-perl/current/META.yml
    branches/upstream/libmousex-types-perl/current/Makefile.PL
    branches/upstream/libmousex-types-perl/current/inc/Module/Install/Repository.pm
    branches/upstream/libmousex-types-perl/current/lib/MouseX/Types.pm
    branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/Mouse.pm
    branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/TypeDecorator.pm
    branches/upstream/libmousex-types-perl/current/t/002-base.t
    branches/upstream/libmousex-types-perl/current/t/003-isa-or.t
    branches/upstream/libmousex-types-perl/current/t/00_compile.t

Modified: branches/upstream/libmousex-types-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/Changes?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/Changes (original)
+++ branches/upstream/libmousex-types-perl/current/Changes Sun Jan  3 02:18:05 2010
@@ -1,7 +1,22 @@
 Revision history for Perl extension MouseX::Types
 
-0.02    2009-10-15T19:01:23+09:00
-        - no longer used class_type on test scripts
+0.03 Sun Dec 20 15:13:39 2009
+    - Shipped as a stable version
+
+0.02_03 Thu Dec 17 14:16:53 2009
+    - Fix segmentation fault issue on older perls (gfx)
+
+0.02_02 Tue Dec 15 12:05:34 2009
+    - Fix parametarization issue (gfx)
+
+0.02_01 Sun Dec 13 16:39:09 2009
+    - Refactoring for new Mouse (gfx)
+    - Fix import to warn about undefined types (gfx)
+    - Support type parametarization (gfx)
+    - Support Mouse::Exporter (gfx)
+
+0.02
+    - Fix a test to avoid warnings
 
 0.01    2009-02-06T08:09:43+09:00
-        - split dist from Mouse 0.14
+    - split dist from Mouse 0.14

Modified: branches/upstream/libmousex-types-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/MANIFEST?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/MANIFEST (original)
+++ branches/upstream/libmousex-types-perl/current/MANIFEST Sun Jan  3 02:18:05 2010
@@ -4,15 +4,11 @@
 inc/Module/Install/Base.pm
 inc/Module/Install/Can.pm
 inc/Module/Install/Fetch.pm
-inc/Module/Install/Include.pm
 inc/Module/Install/Makefile.pm
 inc/Module/Install/Metadata.pm
 inc/Module/Install/Repository.pm
 inc/Module/Install/Win32.pm
 inc/Module/Install/WriteAll.pm
-inc/Scalar/Util.pm
-inc/Test/Exception.pm
-inc/Test/More.pm
 lib/MouseX/Types.pm
 lib/MouseX/Types/Mouse.pm
 lib/MouseX/Types/TypeDecorator.pm
@@ -23,6 +19,7 @@
 t/001-make_immutable.t
 t/002-base.t
 t/003-isa-or.t
+t/004-parametarization.t
 t/00_compile.t
 xt/01_podspell.t
 xt/02_perlcritic.t

Modified: branches/upstream/libmousex-types-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/META.yml?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/META.yml (original)
+++ branches/upstream/libmousex-types-perl/current/META.yml Sun Jan  3 02:18:05 2010
@@ -10,7 +10,7 @@
 configure_requires:
   ExtUtils::MakeMaker: 6.42
 distribution_type: module
-generated_by: 'Module::Install version 0.910'
+generated_by: 'Module::Install version 0.91'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -22,8 +22,9 @@
     - t
     - xt
 requires:
-  Mouse: 0.15
+  Mouse: 0.41
+  perl: 5.6.2
 resources:
   license: http://dev.perl.org/licenses/
   repository: git://github.com/yappo/p5-mousex-types.git
-version: 0.02
+version: 0.03

Modified: branches/upstream/libmousex-types-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/Makefile.PL?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/Makefile.PL (original)
+++ branches/upstream/libmousex-types-perl/current/Makefile.PL Sun Jan  3 02:18:05 2010
@@ -2,15 +2,14 @@
 name 'MouseX-Types';
 all_from 'lib/MouseX/Types.pm';
 
-requires 'Mouse' => 0.15;
+requires 'Mouse' => 0.41;
 
-tests 't/*.t';
+tests 't/*.t t/*/*.t';
 author_tests 'xt';
 
-build_requires 'Test::More';
-build_requires 'Test::Exception';
-build_requires 'Scalar::Util';
+test_requires 'Test::More';
+test_requires 'Test::Exception';
+test_requires 'Scalar::Util';
 
-auto_include;
 auto_set_repository;
 WriteAll;

Modified: branches/upstream/libmousex-types-perl/current/inc/Module/Install/Repository.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/inc/Module/Install/Repository.pm?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/inc/Module/Install/Repository.pm (original)
+++ branches/upstream/libmousex-types-perl/current/inc/Module/Install/Repository.pm Sun Jan  3 02:18:05 2010
@@ -2,17 +2,23 @@
 package Module::Install::Repository;
 
 use strict;
-use 5.008_001;
-our $VERSION = '0.02';
+use 5.005;
+use vars qw($VERSION);
+$VERSION = '0.05';
 
 use base qw(Module::Install::Base);
+
+sub _execute {
+    my ($command) = @_;
+    `$command`;
+}
 
 sub auto_set_repository {
     my $self = shift;
 
     return unless $Module::Install::AUTHOR;
 
-    my $repo = _find_repo();
+    my $repo = _find_repo(\&_execute);
     if ($repo) {
         $self->repository($repo);
     } else {
@@ -21,13 +27,17 @@
 }
 
 sub _find_repo {
+    my ($execute) = @_;
+
     if (-e ".git") {
         # TODO support remote besides 'origin'?
-        if (`git remote show origin` =~ /URL: (.*)$/m) {
+        if ($execute->('git remote show -n origin') =~ /URL: (.*)$/m) {
             # XXX Make it public clone URL, but this only works with github
             my $git_url = $1;
             $git_url =~ s![\w\-]+\@([^:]+):!git://$1/!;
             return $git_url;
+        } elsif ($execute->('git svn info') =~ /URL: (.*)$/m) {
+            return $1;
         }
     } elsif (-e ".svn") {
         if (`svn info` =~ /URL: (.*)$/m) {
@@ -45,6 +55,12 @@
         while (<$handle>) {
             chomp;
             return $_ if m!^http://!;
+        }
+    } elsif (-e ".hg") {
+        if ($execute->('hg paths') =~ /default = (.*)$/m) {
+            my $mercurial_url = $1;
+            $mercurial_url =~ s!^ssh://hg\@(bitbucket\.org/)!https://$1!;
+            return $mercurial_url;
         }
     } elsif (-e "$ENV{HOME}/.svk") {
         # Is there an explicit way to check if it's an svk checkout?
@@ -69,4 +85,4 @@
 
 =encoding utf-8
 
-#line 110
+#line 128

Modified: branches/upstream/libmousex-types-perl/current/lib/MouseX/Types.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/lib/MouseX/Types.pm?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/lib/MouseX/Types.pm (original)
+++ branches/upstream/libmousex-types-perl/current/lib/MouseX/Types.pm Sun Jan  3 02:18:05 2010
@@ -1,51 +1,127 @@
 package MouseX::Types;
-use strict;
-use warnings;
-our $VERSION = '0.02';
-
-require Mouse::Util::TypeConstraints;
-use MouseX::Types::TypeDecorator;
+use 5.006_002;
+use Mouse::Exporter; # turns on strict and warnings
+
+our $VERSION = '0.03';
+
+use Mouse::Util::TypeConstraints ();
 
 sub import {
-    my $class  = shift;
-    my %args   = @_;
-    my $caller = caller(0);
-
+    my($class, %args) = @_;
+
+    my $type_class = caller;
+
+    {
+        no strict 'refs';
+        *{$type_class . '::import'} = \&_initialize_import;
+        push @{$type_class . '::ISA'}, 'MouseX::Types::Base';
+    }
+
+    if(my $declare = $args{-declare}){
+        if(ref($declare) ne 'ARRAY'){
+            Carp::croak("You must pass an ARRAY reference to -declare");
+        }
+        my $storage = $type_class->type_storage();
+        for my $name (@{ $declare }) {
+            my $fq_name = $storage->{$name} = $type_class . '::' . $name;
+
+            my $type = sub {
+                my $obj = Mouse::Util::TypeConstraints::find_type_constraint($fq_name);
+                if($obj){
+                    my $type = $type_class->_generate_type($obj);
+
+                    no strict 'refs';
+                    no warnings 'redefine';
+                    *{$fq_name} = $type;
+
+                    return &{$type};
+                 }
+                 return $fq_name;
+            };
+
+            no strict;
+            *{$fq_name} = $type;
+        }
+    }
+
+    Mouse::Util::TypeConstraints->import({ into => $type_class });
+}
+
+sub _initialize_import {
+    my $type_class = $_[0];
+
+    my $storage = $type_class->type_storage;
+
+    my @exporting;
+
+    for my $name ($type_class->type_names) {
+        my $fq_name = $storage->{$name}
+            || Carp::croak(qq{"$name" is not exported by $type_class});
+
+        my $obj = Mouse::Util::TypeConstraints::find_type_constraint($fq_name)
+            || Carp::croak(qq{"$name" is declared but not defined in $type_class});
+
+        push @exporting, $name;
+
+        no strict 'refs';
+        no warnings 'redefine';
+        *{$type_class . '::' . $name} =$type_class->_generate_type($obj);
+    }
+
+    my($import, $unimport) = Mouse::Exporter->build_import_methods(
+        exporting_package => $type_class,
+        as_is             => \@exporting,
+        groups            => { default => [] },
+    );
+
+    no warnings 'redefine';
     no strict 'refs';
-    *{"$caller\::import"} = sub { my $pkg = caller(0); _import($caller, $pkg, @_) };
-    push @{"$caller\::ISA"}, 'MouseX::Types::Base';
-
-    if (defined $args{'-declare'} && ref($args{'-declare'}) eq 'ARRAY') {
-        my $storage = $caller->type_storage($caller);
-        for my $name (@{ $args{'-declare'} }) {
-            my $obj = $storage->{$name} = "$caller\::$name";
-            *{"$caller\::$name"} = sub () { $obj };
-        }
-    }
-
-    return Mouse::Util::TypeConstraints->export_to_level(1, $class);
+    *{$type_class . '::import'}   = $import;   # redefine myself!
+    *{$type_class . '::unimport'} = $unimport;
+
+    goto &{$import};
 }
 
-sub _import {
-    my($type_class, $pkg, @types) = @_;
-    no strict 'refs';
-    for my $name (@types) {
-        my $obj = $type_class->type_storage->{$name};
-        $obj = $type_class->type_storage->{$name} = MouseX::Types::TypeDecorator->new($obj)
-            unless ref($obj);
-        *{"$pkg\::$name"} = sub () { $obj };
-    }
-}
 
 {
     package MouseX::Types::Base;
     my %storage;
-    sub type_storage {
-        $storage{$_[0]} ||= +{}
+    sub type_storage { # can be overriden
+        return $storage{$_[0]} ||= +{}
+    }
+
+    sub type_names {
+        my($class) = @_;
+        return keys %{$class->type_storage};
+    }
+
+    sub _generate_type {
+        my($type_class, $type_constraint) = @_;
+        return sub {
+            if(@_){ # parameterization
+                my $param = shift;
+                if(!(ref($param) eq 'ARRAY' && @{$param} == 1)){
+                    Carp::croak("Syntax error using type $type_constraint (you must pass an ARRAY reference of a parameter type)");
+                }
+                if(wantarray){
+                    return( $type_constraint->parameterize(@{$param}), @_ );
+                }
+                else{
+                    if(@_){
+                        Carp::croak("Too many arguments for $type_constraint");
+                    }
+                    return $type_constraint->parameterize(@{$param});
+                }
+            }
+            else{
+                return $type_constraint;
+            }
+        };
     }
 }
 
 1;
+__END__
 
 =head1 NAME
 
@@ -124,7 +200,13 @@
 
 =head1 REPOSITORY
 
-  svn co http://code2.0beta.co.uk/moose/svn/MouseX-Types/trunk MouseX-Types
+  git clone git://github.com/yappo/p5-mousex-types.git MouseX-Types
+
+=head1 SEE ALSO
+
+L<Mouse>
+
+L<MooseX::Types>
 
 =head1 LICENSE
 

Modified: branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/Mouse.pm?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/Mouse.pm (original)
+++ branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/Mouse.pm Sun Jan  3 02:18:05 2010
@@ -2,14 +2,41 @@
 use strict;
 use warnings;
 
-BEGIN { require Mouse::Util::TypeConstraints }
+use Mouse::Util::TypeConstraints ();
 use MouseX::Types;
 
-BEGIN {
-    my $builtin_type = +{ map { $_ => $_ } Mouse::Util::TypeConstraints->list_all_builtin_type_constraints };
-    sub type_storage { $builtin_type }  ## no critic
-}
+use constant type_storage => {
+    map { $_ => $_ } Mouse::Util::TypeConstraints->list_all_builtin_type_constraints
+};
+1;
+__END__
 
-1;
+=head1 NAME
 
+MouseX::Types::Mouse - Types shipped with Mouse
 
+=head1 SYNOPSIS
+
+  package Foo;
+  use Mouse;
+  use MouseX::Types::Mouse qw( Int ArrayRef );
+
+  has name => (
+    is  => 'rw',
+    isa => Str;
+  );
+
+  has ids => (
+    is  => 'rw',
+    isa => ArrayRef[Int],
+  );
+
+  1;
+
+=head1 SEE ALSO
+
+L<MouseX::Types>
+
+L<Mouse::Util::TypeConstraints>
+
+=cut

Modified: branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/TypeDecorator.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/TypeDecorator.pm?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/TypeDecorator.pm (original)
+++ branches/upstream/libmousex-types-perl/current/lib/MouseX/Types/TypeDecorator.pm Sun Jan  3 02:18:05 2010
@@ -1,41 +1,8 @@
 package MouseX::Types::TypeDecorator;
-
 use strict;
 use warnings;
 
-use Scalar::Util 'blessed';
+use Carp;
 
-use overload(
-    '""' => sub { ${ $_[0] } },
-    '|' => sub {
-        
-        ## It's kind of ugly that we need to know about Union Types, but this
-        ## is needed for syntax compatibility.  Maybe someday we'll all just do
-        ## Or[Str,Str,Int]
-        
-        my @tc = grep {blessed $_} @_;
-        use Data::Dumper;
-        my $ret;
-        if (ref($_[0])) {
-            $ret = ${ $_[0] };
-        } else {
-            $ret = $_[0];
-        }
-        $ret .= '|';
-        if (ref($_[1])) {
-            $ret .= ${ $_[1] };
-        } else {
-            $ret .= $_[1];
-        }
-        $ret;
-    },
-    fallback => 1,
-    
-);
-
-sub new {
-    my $type = $_[1];
-    bless \$type, $_[0];
-}
-
+carp(__PACKAGE__ . ' is deprecated, and no longer used anywhere');
 1;

Modified: branches/upstream/libmousex-types-perl/current/t/002-base.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/t/002-base.t?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/t/002-base.t (original)
+++ branches/upstream/libmousex-types-perl/current/t/002-base.t Sun Jan  3 02:18:05 2010
@@ -2,7 +2,7 @@
 use warnings;
 use Test::More tests => 16;
 
-{
+BEGIN{
     package Types;
     use MouseX::Types -declare => [qw/ Headers /];
     use MouseX::Types::Mouse 'HashRef';
@@ -15,7 +15,7 @@
     ;
 }
 
-{
+BEGIN{
     package Types2;
     use MouseX::Types -declare => [qw/ Headers /];
     use MouseX::Types::Mouse 'HashRef';

Modified: branches/upstream/libmousex-types-perl/current/t/003-isa-or.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/t/003-isa-or.t?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/t/003-isa-or.t (original)
+++ branches/upstream/libmousex-types-perl/current/t/003-isa-or.t Sun Jan  3 02:18:05 2010
@@ -2,7 +2,7 @@
 use warnings;
 use Test::More tests => 13;
 
-{
+BEGIN{
     package Types;
     use strict;
     use warnings;

Added: branches/upstream/libmousex-types-perl/current/t/004-parametarization.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/t/004-parametarization.t?rev=49990&op=file
==============================================================================
--- branches/upstream/libmousex-types-perl/current/t/004-parametarization.t (added)
+++ branches/upstream/libmousex-types-perl/current/t/004-parametarization.t Sun Jan  3 02:18:05 2010
@@ -1,0 +1,52 @@
+use strict;
+use warnings;
+use Test::More tests => 16;
+
+use MouseX::Types::Mouse qw(ArrayRef HashRef Maybe Str);
+
+my $t = ArrayRef[Str];
+
+ok ref $t, "ArrayRef[Str]";
+ok $t->is_a_type_of(ArrayRef);
+ok $t->check([qw(Foo)]);
+ok!$t->check([ [] ]);
+
+$t = HashRef[Str];
+ok ref $t, "HashRef[Str]";
+ok $t->is_a_type_of(HashRef);
+ok $t->check({foo => "bar"});
+ok!$t->check({foo => {} });
+
+$t = Maybe[Str];
+ok ref $t, "Maybe[Str]";
+ok $t->is_a_type_of(Maybe);
+ok $t->check("foo");
+ok $t->check(undef);
+ok!$t->check({});
+
+eval {
+    $t = Str[Str];
+};
+ok $@;
+
+eval {
+    $t = ArrayRef([Str, Str]);
+};
+
+ok $@;
+
+eval q{
+    package Class;
+    use Mouse;
+    use MouseX::Types::Mouse qw(ArrayRef Str);
+
+    has foo => (
+        is => 'rw',
+        isa => ArrayRef[Str],
+
+        requires => 1,
+    );
+};
+
+is $@, '';
+

Propchange: branches/upstream/libmousex-types-perl/current/t/004-parametarization.t
------------------------------------------------------------------------------
    svn:executable = *

Modified: branches/upstream/libmousex-types-perl/current/t/00_compile.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmousex-types-perl/current/t/00_compile.t?rev=49990&op=diff
==============================================================================
--- branches/upstream/libmousex-types-perl/current/t/00_compile.t (original)
+++ branches/upstream/libmousex-types-perl/current/t/00_compile.t Sun Jan  3 02:18:05 2010
@@ -1,4 +1,5 @@
 use strict;
-use Test::More tests => 1;
+use Test::More tests => 2;
 
 BEGIN { use_ok 'MouseX::Types' }
+BEGIN { use_ok 'MouseX::Types::Mouse' }




More information about the Pkg-perl-cvs-commits mailing list