X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouseX%2FTypes.pm;h=713984c851d855eb234756c9d3556ddcce2c8f8b;hb=1d6d25f17a1f5d3bbc9d900e5e526460973c019e;hp=ada0e757bf6e43ff41da9b44f5d2802d1dd069b1;hpb=03478c1c9ef8a29bf493ee337e99c18118ed3bf8;p=gitmo%2FMouse.git diff --git a/lib/MouseX/Types.pm b/lib/MouseX/Types.pm index ada0e75..713984c 100644 --- a/lib/MouseX/Types.pm +++ b/lib/MouseX/Types.pm @@ -3,6 +3,7 @@ use strict; use warnings; require Mouse::TypeRegistry; +use MouseX::Types::TypeDecorator; sub import { my $class = shift; @@ -16,8 +17,8 @@ sub import { if (defined $args{'-declare'} && ref($args{'-declare'}) eq 'ARRAY') { my $storage = $caller->type_storage($caller); for my $name (@{ $args{'-declare'} }) { - $storage->{$name} = "$caller\::$name"; - *{"$caller\::$name"} = sub () { $caller->type_storage->{$name} }; + my $obj = $storage->{$name} = "$caller\::$name"; + *{"$caller\::$name"} = sub () { $obj }; } } @@ -28,7 +29,10 @@ sub _import { my($type_class, $pkg, @types) = @_; no strict 'refs'; for my $name (@types) { - *{"$pkg\::$name"} = sub () { $type_class->type_storage->{$name} } + 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 }; } } @@ -44,7 +48,7 @@ sub _import { =head1 NAME -Mouse - Organise your Mouse types in libraries +MouseX::Types - Organise your Mouse types in libraries =head1 SYNOPSIS