r34322 - in /trunk/libmoosex-methodattributes-perl: ./ debian/ lib/MooseX/ lib/MooseX/MethodAttributes/ lib/MooseX/MethodAttributes/Role/ lib/MooseX/MethodAttributes/Role/AttrContainer/ lib/MooseX/MethodAttributes/Role/Meta/ lib/MooseX/MethodAttributes/Role/Meta/Method/ t/ t/lib/
eloy at users.alioth.debian.org
eloy at users.alioth.debian.org
Wed Apr 29 17:34:25 UTC 2009
Author: eloy
Date: Wed Apr 29 17:34:19 2009
New Revision: 34322
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=34322
Log:
new upstream version
Added:
trunk/libmoosex-methodattributes-perl/t/catalyst2.t
- copied unchanged from r34321, branches/upstream/libmoosex-methodattributes-perl/current/t/catalyst2.t
Removed:
trunk/libmoosex-methodattributes-perl/t/catalyst_todo.t
Modified:
trunk/libmoosex-methodattributes-perl/Changes
trunk/libmoosex-methodattributes-perl/MANIFEST
trunk/libmoosex-methodattributes-perl/META.yml
trunk/libmoosex-methodattributes-perl/Makefile.PL
trunk/libmoosex-methodattributes-perl/README
trunk/libmoosex-methodattributes-perl/debian/changelog
trunk/libmoosex-methodattributes-perl/dist.ini
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Inheritable.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Class.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm
trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm
trunk/libmoosex-methodattributes-perl/t/lib/BaseClass.pm
trunk/libmoosex-methodattributes-perl/t/lib/OtherSubClass.pm
trunk/libmoosex-methodattributes-perl/t/lib/SubClass.pm
trunk/libmoosex-methodattributes-perl/t/lib/SubClassUseBaseAndUseMoose.pm
trunk/libmoosex-methodattributes-perl/t/lib/SubSubClass.pm
trunk/libmoosex-methodattributes-perl/t/lib/TestClass.pm
Modified: trunk/libmoosex-methodattributes-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/Changes?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/Changes (original)
+++ trunk/libmoosex-methodattributes-perl/Changes Wed Apr 29 17:34:19 2009
@@ -1,3 +1,9 @@
+0.09 Tue, 28 Apr 2009 09:47:28 + 0100
+ * Use modifiers in the metaclass role to catch modifiers being applied
+ to subs, and apply our wrapped method role to the generated method
+ instance. This is horrible, but appears to be a sane way to avoid
+ that fact that method metaclasses applied to one class aren't inherited.
+
0.08 Sat, 25 Apr 2009 16:30:00 + 0100
* Fix get_nearest_methods_with_attributes to deal with wrapped methods.
- Add tests for this, and how Catalyst uses the module
Modified: trunk/libmoosex-methodattributes-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/MANIFEST?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/MANIFEST (original)
+++ trunk/libmoosex-methodattributes-perl/MANIFEST Wed Apr 29 17:34:19 2009
@@ -16,7 +16,7 @@
t/basic.t
t/calling.t
t/catalyst.t
-t/catalyst_todo.t
+t/catalyst2.t
t/inherited.t
t/inherited_non_moose_multilevel.t
t/lib/BaseClass.pm
Modified: trunk/libmoosex-methodattributes-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/META.yml?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/META.yml (original)
+++ trunk/libmoosex-methodattributes-perl/META.yml Wed Apr 29 17:34:19 2009
@@ -10,4 +10,4 @@
Moose: 0.70
MooseX::Types: 0.06
namespace::clean: 0
-version: 0.08
+version: 0.09
Modified: trunk/libmoosex-methodattributes-perl/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/Makefile.PL?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/Makefile.PL (original)
+++ trunk/libmoosex-methodattributes-perl/Makefile.PL Wed Apr 29 17:34:19 2009
@@ -9,7 +9,7 @@
NAME => 'MooseX::MethodAttributes',
AUTHOR => 'Florian\ Ragwitz\ \<rafl\@debian\.org\>\,\ Tomas\ Doran\ \<bobtfish\@bobtfish\.net\>',
ABSTRACT => 'code attribute introspection',
- VERSION => '0.08',
+ VERSION => '0.09',
EXE_FILES => [ qw() ],
(eval { ExtUtils::MakeMaker->VERSION(6.21) } ? (LICENSE => 'perl') : ()),
PREREQ_PM => {
Modified: trunk/libmoosex-methodattributes-perl/README
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/README?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/README (original)
+++ trunk/libmoosex-methodattributes-perl/README Wed Apr 29 17:34:19 2009
@@ -1,7 +1,7 @@
This archive contains the distribution MooseX-MethodAttributes, version
-0.08:
+0.09:
code attribute introspection
Modified: trunk/libmoosex-methodattributes-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/debian/changelog?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/debian/changelog (original)
+++ trunk/libmoosex-methodattributes-perl/debian/changelog Wed Apr 29 17:34:19 2009
@@ -1,3 +1,9 @@
+libmoosex-methodattributes-perl (0.09-1) UNRELEASED; urgency=low
+
+ * New upstream release
+
+ -- Krzysztof Krzyżaniak (eloy) <eloy at debian.org> Wed, 29 Apr 2009 19:33:31 +0200
+
libmoosex-methodattributes-perl (0.08-1) unstable; urgency=low
[ Ansgar Burchardt ]
Modified: trunk/libmoosex-methodattributes-perl/dist.ini
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/dist.ini?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/dist.ini (original)
+++ trunk/libmoosex-methodattributes-perl/dist.ini Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
name = MooseX-MethodAttributes
-version = 0.08
+version = 0.09
author = Florian Ragwitz <rafl at debian.org>
author = Tomas Doran <bobtfish at bobtfish.net>
license = Perl_5
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes.pm Wed Apr 29 17:34:19 2009
@@ -2,7 +2,7 @@
use warnings;
package MooseX::MethodAttributes;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: code attribute introspection
@@ -38,7 +38,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 SYNOPSIS
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Inheritable.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Inheritable.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Inheritable.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Inheritable.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Inheritable;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: inheritable code attribute introspection
@@ -21,7 +21,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 SYNOPSIS
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Role::AttrContainer;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: capture code attributes in the class' metaclass
@@ -24,7 +24,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 METHODS
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/AttrContainer/Inheritable.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Role::AttrContainer::Inheritable;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: capture code attributes in the automatically initialized metaclass instance
@@ -18,7 +18,8 @@
return if $meta
&& does_role($meta, 'MooseX::MethodAttributes::Role::Meta::Class')
- && does_role($meta->method_metaclass, 'MooseX::MethodAttributes::Role::Meta::Method');
+ && does_role($meta->method_metaclass, 'MooseX::MethodAttributes::Role::Meta::Method')
+ && does_role($meta->wrapped_method_metaclass, 'MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped');
Moose->init_meta( for_class => $class )
unless $meta;
@@ -39,7 +40,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 DESCRIPTION
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Class.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Class.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Class.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Class.pm Wed Apr 29 17:34:19 2009
@@ -1,10 +1,10 @@
package MooseX::MethodAttributes::Role::Meta::Class;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: metaclass role for storing code attributes
use Moose::Role;
-use Moose::Util qw/find_meta/;
+use Moose::Util qw/find_meta does_role/;
use MooseX::Types::Moose qw/HashRef ArrayRef Str Int/;
use namespace::clean -except => 'meta';
@@ -55,9 +55,11 @@
} map {
my $addr = 0 + $_->_get_attributed_coderef;
exists $self->_method_attribute_map->{$addr}
- ? [$addr, $_]
- : ()
- } grep { $_->can('_get_attributed_coderef') } @methods;
+ ? [$addr, $_]
+ : ()
+ } grep {
+ $_->can('_get_attributed_coderef')
+ } @methods;
}
@@ -73,19 +75,52 @@
($meta && ($meth = $meta->can('get_method_with_attributes_list')))
? $meta->$meth
: ()
- } reverse $self->linearized_isa
+ } reverse $self->linearized_isa;
}
sub get_nearest_methods_with_attributes {
my ($self) = @_;
-
- map {
+ my @list = map {
my $m = $self->find_method_by_name($_->name);
my $meth = $m->can('attributes');
my $attrs = $meth ? $m->$meth() : [];
scalar @{ $attrs } ? ( $m ) : ( );
} $self->get_all_methods_with_attributes;
+ return @list;
+}
+
+foreach my $type (qw/after before around/) {
+ around "add_${type}_method_modifier" => sub {
+ my $orig = shift;
+ my $meta = shift;
+ my ($method_name) = @_;
+
+ unless(
+ does_role($meta, 'MooseX::MethodAttributes::Role::Meta::Class')
+ && does_role($meta->method_metaclass, 'MooseX::MethodAttributes::Role::Meta::Method')
+ && does_role($meta->wrapped_method_metaclass, 'MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped')
+ ) {
+
+ Moose::Util::MetaRole::apply_metaclass_roles(
+ for_class => $meta->name,
+ metaclass_roles => ['MooseX::MethodAttributes::Role::Meta::Class'],
+ method_metaclass_roles => ['MooseX::MethodAttributes::Role::Meta::Method'],
+ wrapped_method_metaclass_roles => ['MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped'],
+ );
+ # Get replaced metaclass..
+ $meta = find_meta($meta->name);
+ }
+ my $code = $meta->$orig(@_);
+ my $method = $meta->get_method($method_name);
+ if (
+ does_role($method->get_original_method, 'MooseX::MethodAttributes::Role::Meta::Method')
+ || does_role($method->get_original_method, 'MooseX::MethodAttributes::Role::Meta::Method::Wrapped')
+ ) {
+ MooseX::MethodAttributes::Role::Meta::Method::Wrapped->meta->apply($method);
+ }
+ return $code;
+ }
}
1;
@@ -98,7 +133,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 METHODS
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Role::Meta::Method;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: metamethod role allowing code attribute introspection
@@ -34,7 +34,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 ATTRIBUTES
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/MaybeWrapped.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Role::Meta::Method::MaybeWrapped;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: proxy attributes of wrapped methods if their metaclass supports it
@@ -11,7 +11,11 @@
override wrap => sub {
my $self = super;
- if (does_role($self->get_original_method, 'MooseX::MethodAttributes::Role::Meta::Method')) {
+ my $original_method = $self->get_original_method;
+ if (
+ does_role($original_method, 'MooseX::MethodAttributes::Role::Meta::Method')
+ || does_role($original_method, 'MooseX::MethodAttributes::Role::Meta::Method::Wrapped')
+ ) {
MooseX::MethodAttributes::Role::Meta::Method::Wrapped->meta->apply($self);
}
return $self;
@@ -26,7 +30,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 AUTHORS
Modified: trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm (original)
+++ trunk/libmoosex-methodattributes-perl/lib/MooseX/MethodAttributes/Role/Meta/Method/Wrapped.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package MooseX::MethodAttributes::Role::Meta::Method::Wrapped;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
# ABSTRACT: wrapped metamethod role allowing code attribute introspection
@@ -27,7 +27,7 @@
=head1 VERSION
-version 0.08
+version 0.09
=head1 METHODS
Modified: trunk/libmoosex-methodattributes-perl/t/lib/BaseClass.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/BaseClass.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/BaseClass.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/BaseClass.pm Wed Apr 29 17:34:19 2009
@@ -2,12 +2,12 @@
use warnings;
package BaseClass::Meta::Role;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use Moose::Role;
package BaseClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use Moose;
Modified: trunk/libmoosex-methodattributes-perl/t/lib/OtherSubClass.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/OtherSubClass.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/OtherSubClass.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/OtherSubClass.pm Wed Apr 29 17:34:19 2009
@@ -2,7 +2,7 @@
use warnings;
package OtherSubClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use base qw/BaseClass/;
Modified: trunk/libmoosex-methodattributes-perl/t/lib/SubClass.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/SubClass.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/SubClass.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/SubClass.pm Wed Apr 29 17:34:19 2009
@@ -2,7 +2,7 @@
use warnings;
package SubClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use Moose;
Modified: trunk/libmoosex-methodattributes-perl/t/lib/SubClassUseBaseAndUseMoose.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/SubClassUseBaseAndUseMoose.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/SubClassUseBaseAndUseMoose.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/SubClassUseBaseAndUseMoose.pm Wed Apr 29 17:34:19 2009
@@ -2,7 +2,7 @@
use warnings;
package SubClassUseBaseAndUseMoose;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use base qw/BaseClass/;
Modified: trunk/libmoosex-methodattributes-perl/t/lib/SubSubClass.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/SubSubClass.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/SubSubClass.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/SubSubClass.pm Wed Apr 29 17:34:19 2009
@@ -2,7 +2,7 @@
use warnings;
package SubSubClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use base qw/OtherSubClass/;
Modified: trunk/libmoosex-methodattributes-perl/t/lib/TestClass.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmoosex-methodattributes-perl/t/lib/TestClass.pm?rev=34322&op=diff
==============================================================================
--- trunk/libmoosex-methodattributes-perl/t/lib/TestClass.pm (original)
+++ trunk/libmoosex-methodattributes-perl/t/lib/TestClass.pm Wed Apr 29 17:34:19 2009
@@ -1,5 +1,5 @@
package TestClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use Moose;
@@ -12,7 +12,7 @@
after foo => sub {};
package SubClass;
-our $VERSION = '0.08';
+our $VERSION = '0.09';
use Moose;
More information about the Pkg-perl-cvs-commits
mailing list