| Moose documentation | Contained in the Moose distribution. |
Moose::Meta::Role::Application - A base class for role application
version 2.0010
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.
See BUGS in Moose for details on reporting bugs.
Stevan Little <stevan@iinteractive.com>
This software is copyright (c) 2011 by Infinity Interactive, Inc..
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Moose documentation | Contained in the Moose distribution. |
package Moose::Meta::Role::Application; BEGIN { $Moose::Meta::Role::Application::AUTHORITY = 'cpan:STEVAN'; } BEGIN { $Moose::Meta::Role::Application::VERSION = '2.0010'; } use strict; use warnings; use metaclass; __PACKAGE__->meta->add_attribute('method_exclusions' => ( init_arg => '-excludes', reader => 'get_method_exclusions', default => sub { [] } )); __PACKAGE__->meta->add_attribute('method_aliases' => ( init_arg => '-alias', reader => 'get_method_aliases', default => sub { {} } )); sub new { my ($class, %params) = @_; $class->_new(\%params); } sub is_method_excluded { my ($self, $method_name) = @_; foreach (@{$self->get_method_exclusions}) { return 1 if $_ eq $method_name; } return 0; } sub is_method_aliased { my ($self, $method_name) = @_; exists $self->get_method_aliases->{$method_name} ? 1 : 0 } sub is_aliased_method { my ($self, $method_name) = @_; my %aliased_names = reverse %{$self->get_method_aliases}; exists $aliased_names{$method_name} ? 1 : 0; } sub apply { my $self = shift; $self->check_role_exclusions(@_); $self->check_required_methods(@_); $self->check_required_attributes(@_); $self->apply_attributes(@_); $self->apply_methods(@_); $self->apply_override_method_modifiers(@_); $self->apply_before_method_modifiers(@_); $self->apply_around_method_modifiers(@_); $self->apply_after_method_modifiers(@_); } sub check_role_exclusions { Carp::croak "Abstract Method" } sub check_required_methods { Carp::croak "Abstract Method" } sub check_required_attributes { Carp::croak "Abstract Method" } sub apply_attributes { Carp::croak "Abstract Method" } sub apply_methods { Carp::croak "Abstract Method" } sub apply_override_method_modifiers { Carp::croak "Abstract Method" } sub apply_method_modifiers { Carp::croak "Abstract Method" } sub apply_before_method_modifiers { (shift)->apply_method_modifiers('before' => @_) } sub apply_around_method_modifiers { (shift)->apply_method_modifiers('around' => @_) } sub apply_after_method_modifiers { (shift)->apply_method_modifiers('after' => @_) } 1; # ABSTRACT: A base class for role application
__END__