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