r49994 - in /trunk/libmousex-types-perl: ./ debian/ inc/Module/Install/ inc/Scalar/ inc/Test/ lib/MouseX/ lib/MouseX/Types/ t/ xt/
jawnsy-guest at users.alioth.debian.org
jawnsy-guest at users.alioth.debian.org
Sun Jan 3 02:32:54 UTC 2010
Author: jawnsy-guest
Date: Sun Jan 3 02:32:45 2010
New Revision: 49994
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=49994
Log:
prepare for release
Added:
trunk/libmousex-types-perl/t/000_compile.t
- copied unchanged from r49993, branches/upstream/libmousex-types-perl/current/t/000_compile.t
trunk/libmousex-types-perl/t/004-parametarization.t
- copied unchanged from r49991, branches/upstream/libmousex-types-perl/current/t/004-parametarization.t
trunk/libmousex-types-perl/t/005-predicate.t
- copied unchanged from r49993, branches/upstream/libmousex-types-perl/current/t/005-predicate.t
Removed:
trunk/libmousex-types-perl/inc/Module/Install/Include.pm
trunk/libmousex-types-perl/inc/Scalar/
trunk/libmousex-types-perl/inc/Test/
trunk/libmousex-types-perl/t/00_compile.t
Modified:
trunk/libmousex-types-perl/Changes
trunk/libmousex-types-perl/MANIFEST
trunk/libmousex-types-perl/META.yml
trunk/libmousex-types-perl/Makefile.PL
trunk/libmousex-types-perl/debian/changelog
trunk/libmousex-types-perl/debian/control
trunk/libmousex-types-perl/debian/copyright
trunk/libmousex-types-perl/inc/Module/Install/Repository.pm
trunk/libmousex-types-perl/lib/MouseX/Types.pm
trunk/libmousex-types-perl/lib/MouseX/Types/Mouse.pm
trunk/libmousex-types-perl/lib/MouseX/Types/TypeDecorator.pm
trunk/libmousex-types-perl/t/002-base.t
trunk/libmousex-types-perl/t/003-isa-or.t
trunk/libmousex-types-perl/xt/perlcriticrc
Modified: trunk/libmousex-types-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/Changes?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/Changes (original)
+++ trunk/libmousex-types-perl/Changes Sun Jan 3 02:32:45 2010
@@ -1,7 +1,27 @@
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.04 Sun Jan 3 10:23:47 2010
+ - Add copyright information (RT #53013)
+ - Support type predicates
+ (e.g. "use MouseX::Types::Mouse qw(is_Int)")
+
+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: trunk/libmousex-types-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/MANIFEST?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/MANIFEST (original)
+++ trunk/libmousex-types-perl/MANIFEST Sun Jan 3 02:32:45 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
@@ -20,10 +16,12 @@
MANIFEST This list of files
META.yml
README
+t/000_compile.t
t/001-make_immutable.t
t/002-base.t
t/003-isa-or.t
-t/00_compile.t
+t/004-parametarization.t
+t/005-predicate.t
xt/01_podspell.t
xt/02_perlcritic.t
xt/03_pod.t
Modified: trunk/libmousex-types-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/META.yml?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/META.yml (original)
+++ trunk/libmousex-types-perl/META.yml Sun Jan 3 02:32:45 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.04
Modified: trunk/libmousex-types-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/Makefile.PL?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/Makefile.PL (original)
+++ trunk/libmousex-types-perl/Makefile.PL Sun Jan 3 02:32:45 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: trunk/libmousex-types-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/debian/changelog?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/debian/changelog (original)
+++ trunk/libmousex-types-perl/debian/changelog Sun Jan 3 02:32:45 2010
@@ -1,7 +1,5 @@
-libmousex-types-perl (0.02-1) UNRELEASED; urgency=low
-
- TODO: stalled by missing license info
+libmousex-types-perl (0.04-1) UNRELEASED; urgency=low
* Initial Release.
- -- Jonathan Yu <jawnsy at cpan.org> Tue, 15 Dec 2009 17:14:00 -0500
+ -- Jonathan Yu <jawnsy at cpan.org> Sat, 02 Jan 2010 21:22:29 -0500
Modified: trunk/libmousex-types-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/debian/control?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/debian/control (original)
+++ trunk/libmousex-types-perl/debian/control Sun Jan 3 02:32:45 2010
@@ -2,8 +2,7 @@
Section: perl
Priority: optional
Build-Depends: debhelper (>= 7)
-Build-Depends-Indep: perl (>= 5.8.9), libtest-exception-perl,
- libmouse-perl (>= 0.15)
+Build-Depends-Indep: perl, libtest-exception-perl, libmouse-perl (>= 0.41)
Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
Uploaders: Jonathan Yu <jawnsy at cpan.org>
Standards-Version: 3.8.3
@@ -13,8 +12,14 @@
Package: libmousex-types-perl
Architecture: all
-Depends: ${perl:Depends}, ${misc:Depends}, libmouse-perl (>= 0.15)
-Description: Organize your Mouse types in libraries
- Organize your Mouse types in libraries
+Depends: ${perl:Depends}, ${misc:Depends}, libmouse-perl (>= 0.41)
+Description: Mouse extension to organise types in libraries
+ MouseX::Types allows developers to organise and selectively import your own
+ and the built-in types in libraries, rather than the default behaviour where
+ types are global. As a nice side effect, it catches typographic errors at
+ compile-time too.
.
- This description was automagically extracted from the module by dh-make-perl.
+ The main motivation for this module is to provide an easy way of preventing
+ conflicts with your type names, since the internal fully qualified names of
+ the types will be prefixed with the library's name. It also provides some
+ convenient functions for working with Mouse types.
Modified: trunk/libmousex-types-perl/debian/copyright
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/debian/copyright?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/debian/copyright (original)
+++ trunk/libmousex-types-perl/debian/copyright Sun Jan 3 02:32:45 2010
@@ -4,7 +4,14 @@
Name: MouseX-Types
Files: *
-Copyright: Kazuhiro Osawa <yappo at shibuya.pl>
+Copyright: 2008-2009, Kazuhiro Osawa <yappo at shibuya.pl>
+ 2007-2009 Robert Sedlacek <rs at 474.at>
+License: Artistic or GPL-1+
+
+Files: inc/Module/*
+Copyright: 2002-2009, Adam Kennedy <adamk at cpan.org>
+ 2002-2009, Audrey Tang <autrijus at autrijus.org>
+ 2002-2009, Brian Ingerson <ingy at cpan.org>
License: Artistic or GPL-1+
Files: debian/*
Modified: trunk/libmousex-types-perl/inc/Module/Install/Repository.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/inc/Module/Install/Repository.pm?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/inc/Module/Install/Repository.pm (original)
+++ trunk/libmousex-types-perl/inc/Module/Install/Repository.pm Sun Jan 3 02:32:45 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: trunk/libmousex-types-perl/lib/MouseX/Types.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/lib/MouseX/Types.pm?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/lib/MouseX/Types.pm (original)
+++ trunk/libmousex-types-perl/lib/MouseX/Types.pm Sun Jan 3 02:32:45 2010
@@ -1,51 +1,130 @@
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.04';
+
+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, 'is_' . $name;
+
+ no strict 'refs';
+ no warnings 'redefine';
+ *{$type_class . '::' . $name} = $type_class->_generate_type($obj);
+ *{$type_class . '::is_' . $name} = $obj->_compiled_type_constraint;
+ }
+
+ 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__
+
+=encoding utf-8
=head1 NAME
@@ -112,7 +191,7 @@
1;
-=head1 AUTHOR
+=head1 AUTHORS
Kazuhiro Osawa E<lt>yappo <at> shibuya <döt> plE<gt>
@@ -120,13 +199,24 @@
tokuhirom
+Goro Fuji
+
with plenty of code borrowed from L<MooseX::Types>
=head1 REPOSITORY
- svn co http://code2.0beta.co.uk/moose/svn/MouseX-Types/trunk MouseX-Types
-
-=head1 LICENSE
+ git clone git://github.com/yappo/p5-mousex-types.git MouseX-Types
+
+=head1 SEE ALSO
+
+L<Mouse>
+
+L<MooseX::Types>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 2008-2009, Kazuhiro Osawa and partly based on MooseX::Types, which
+is (c) Robert Sedlacek.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
Modified: trunk/libmousex-types-perl/lib/MouseX/Types/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/lib/MouseX/Types/Mouse.pm?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/lib/MouseX/Types/Mouse.pm (original)
+++ trunk/libmousex-types-perl/lib/MouseX/Types/Mouse.pm Sun Jan 3 02:32:45 2010
@@ -1,15 +1,41 @@
package MouseX::Types::Mouse;
-use strict;
-use warnings;
-BEGIN { require Mouse::Util::TypeConstraints }
use MouseX::Types;
+use Mouse::Util::TypeConstraints ();
-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__
+=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: trunk/libmousex-types-perl/lib/MouseX/Types/TypeDecorator.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/lib/MouseX/Types/TypeDecorator.pm?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/lib/MouseX/Types/TypeDecorator.pm (original)
+++ trunk/libmousex-types-perl/lib/MouseX/Types/TypeDecorator.pm Sun Jan 3 02:32:45 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: trunk/libmousex-types-perl/t/002-base.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/t/002-base.t?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/t/002-base.t (original)
+++ trunk/libmousex-types-perl/t/002-base.t Sun Jan 3 02:32:45 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: trunk/libmousex-types-perl/t/003-isa-or.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/t/003-isa-or.t?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/t/003-isa-or.t (original)
+++ trunk/libmousex-types-perl/t/003-isa-or.t Sun Jan 3 02:32:45 2010
@@ -2,7 +2,7 @@
use warnings;
use Test::More tests => 13;
-{
+BEGIN{
package Types;
use strict;
use warnings;
Modified: trunk/libmousex-types-perl/xt/perlcriticrc
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmousex-types-perl/xt/perlcriticrc?rev=49994&op=diff
==============================================================================
--- trunk/libmousex-types-perl/xt/perlcriticrc (original)
+++ trunk/libmousex-types-perl/xt/perlcriticrc Sun Jan 3 02:32:45 2010
@@ -1,2 +1,4 @@
[TestingAndDebugging::ProhibitNoStrict]
-allow=refs
+allow = refs
+[TestingAndDebugging::RequireUseStrict]
+equivalent_modules = Mouse::Exporter MouseX::Types
More information about the Pkg-perl-cvs-commits
mailing list