From: Dave Rolsky Date: Tue, 21 Sep 2010 18:31:59 +0000 (-0500) Subject: Add inling for native Code trait X-Git-Tag: 1.15~123 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=fc6ef638e6d61a87b44a987eb3545829197e9200;p=gitmo%2FMoose.git Add inling for native Code trait --- diff --git a/lib/Moose/Meta/Attribute/Native/MethodProvider/Code.pm b/lib/Moose/Meta/Attribute/Native/MethodProvider/Code.pm deleted file mode 100644 index 26dca52..0000000 --- a/lib/Moose/Meta/Attribute/Native/MethodProvider/Code.pm +++ /dev/null @@ -1,67 +0,0 @@ -package Moose::Meta::Attribute::Native::MethodProvider::Code; -use Moose::Role; - -our $VERSION = '1.14'; -$VERSION = eval $VERSION; -our $AUTHORITY = 'cpan:STEVAN'; - -sub execute : method { - my ($attr, $reader, $writer) = @_; - return sub { - my ($self, @args) = @_; - $reader->($self)->(@args); - }; -} - -sub execute_method : method { - my ($attr, $reader, $writer) = @_; - return sub { - my ($self, @args) = @_; - $reader->($self)->($self, @args); - }; -} - -no Moose::Role; - -1; - -__END__ - -=pod - -=head1 NAME - -Moose::Meta::Attribute::Native::MethodProvider::Code - role providing method generators for Code trait - -=head1 DESCRIPTION - -This is a role which provides the method generators for -L. Please check there for -documentation on what methods are provided. - -=head1 METHODS - -=over 4 - -=item B - -=back - -=head1 BUGS - -See L for details on reporting bugs. - -=head1 AUTHOR - - Florian Ragwitz - -=head1 COPYRIGHT AND LICENSE - -Copyright 2007-2009 by Infinity Interactive, Inc. - -L - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - -=cut diff --git a/lib/Moose/Meta/Attribute/Native/Trait/Code.pm b/lib/Moose/Meta/Attribute/Native/Trait/Code.pm index a67f1c5..07ac6e8 100644 --- a/lib/Moose/Meta/Attribute/Native/Trait/Code.pm +++ b/lib/Moose/Meta/Attribute/Native/Trait/Code.pm @@ -1,22 +1,19 @@ package Moose::Meta::Attribute::Native::Trait::Code; use Moose::Role; -use Moose::Meta::Attribute::Native::MethodProvider::Code; our $VERSION = '1.14'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; -with 'Moose::Meta::Attribute::Native::Trait'; +use Moose::Meta::Method::Accessor::Native::Code::execute; +use Moose::Meta::Method::Accessor::Native::Code::execute_method; -has method_provider => ( - is => 'ro', - isa => 'ClassName', - predicate => 'has_method_provider', - default => 'Moose::Meta::Attribute::Native::MethodProvider::Code', -); +with 'Moose::Meta::Attribute::Native::Trait'; sub _helper_type { 'CodeRef' } +sub _native_type { 'Code' } + no Moose::Role; 1; diff --git a/lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm b/lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm new file mode 100644 index 0000000..3882a61 --- /dev/null +++ b/lib/Moose/Meta/Method/Accessor/Native/Code/execute.pm @@ -0,0 +1,21 @@ +package Moose::Meta::Method::Accessor::Native::Code::execute; + +use strict; +use warnings; + +our $VERSION = '1.13'; +$VERSION = eval $VERSION; +our $AUTHORITY = 'cpan:STEVAN'; + +use base 'Moose::Meta::Method::Accessor::Native::Reader'; + +sub _minimum_arguments { 0 } +sub _maximum_arguments { undef } + +sub _return_value { + my ( $self, $slot_access ) = @_; + + return "${slot_access}->(\@_)"; +} + +1; diff --git a/lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm b/lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm new file mode 100644 index 0000000..ef376a6 --- /dev/null +++ b/lib/Moose/Meta/Method/Accessor/Native/Code/execute_method.pm @@ -0,0 +1,21 @@ +package Moose::Meta::Method::Accessor::Native::Code::execute_method; + +use strict; +use warnings; + +our $VERSION = '1.13'; +$VERSION = eval $VERSION; +our $AUTHORITY = 'cpan:STEVAN'; + +use base 'Moose::Meta::Method::Accessor::Native::Reader'; + +sub _minimum_arguments { 0 } +sub _maximum_arguments { undef } + +sub _return_value { + my ( $self, $slot_access ) = @_; + + return "${slot_access}->(\$self, \@_)"; +} + +1;