X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FRole%2FApplication.pm;h=040a0c07054ff347fa7bdd00f5b9907b595d72a8;hb=b6cca0d5690feec99436fe952315d5d4feeb9473;hp=f59bda29799512f9866afb3512ba54391e5ac4c5;hpb=eaa35e6e0f9132abf6ed0cec60515dd7259ce704;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Role/Application.pm b/lib/Moose/Meta/Role/Application.pm index f59bda2..040a0c0 100644 --- a/lib/Moose/Meta/Role/Application.pm +++ b/lib/Moose/Meta/Role/Application.pm @@ -4,32 +4,51 @@ use strict; use warnings; use metaclass; -our $VERSION = '0.50'; +our $VERSION = '1.14'; +$VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; __PACKAGE__->meta->add_attribute('method_exclusions' => ( - init_arg => 'excludes', + init_arg => '-excludes', reader => 'get_method_exclusions', default => sub { [] } )); __PACKAGE__->meta->add_attribute('method_aliases' => ( - init_arg => 'alias', + init_arg => '-alias', reader => 'get_method_aliases', default => sub { {} } )); -sub new { +sub new { my ($class, %params) = @_; - - if (exists $params{excludes}) { + + if ( exists $params{excludes} || exists $params{alias} ) { + Moose::Deprecated::deprecated( + feature => 'alias or excludes', + message => + "The alias and excludes options for role application have been renamed -alias and -excludes" + ); + } + + if ( exists $params{excludes} && !exists $params{'-excludes'} ) { + $params{'-excludes'} = delete $params{excludes}; + } + if ( exists $params{alias} && !exists $params{'-alias'} ) { + $params{'-alias'} = delete $params{alias}; + } + + if ( exists $params{'-excludes'} ) { + # I wish we had coercion here :) - $params{excludes} = (ref $params{excludes} eq 'ARRAY' - ? $params{excludes} - : [ $params{excludes} ]); + $params{'-excludes'} = ( + ref $params{'-excludes'} eq 'ARRAY' + ? $params{'-excludes'} + : [ $params{'-excludes'} ] + ); } - - $class->meta->new_object(%params); + + $class->_new(\%params); } sub is_method_excluded { @@ -57,12 +76,12 @@ sub apply { $self->check_role_exclusions(@_); $self->check_required_methods(@_); $self->check_required_attributes(@_); - + $self->apply_attributes(@_); - $self->apply_methods(@_); - + $self->apply_methods(@_); + $self->apply_override_method_modifiers(@_); - + $self->apply_before_method_modifiers(@_); $self->apply_around_method_modifiers(@_); $self->apply_after_method_modifiers(@_); @@ -95,6 +114,9 @@ Moose::Meta::Role::Application - A base class for role application This is the abstract base class for role applications. +The API for this class and its subclasses still needs some +consideration, and is intentionally not yet documented. + =head2 METHODS =over 4 @@ -139,9 +161,7 @@ This is the abstract base class for role applications. =head1 BUGS -All complex software has bugs lurking in it, and this module is no -exception. If you find a bug please either email me, or add the bug -to cpan-RT. +See L for details on reporting bugs. =head1 AUTHOR @@ -149,7 +169,7 @@ Stevan Little Estevan@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2006-2008 by Infinity Interactive, Inc. +Copyright 2006-2010 by Infinity Interactive, Inc. L