← Index
Performance Profile   « block view • line view • sub view »
For t/test-parsing
  Run on Sun Nov 14 09:49:57 2010
Reported on Sun Nov 14 09:50:11 2010

File /usr/local/lib/perl/5.10.0/Moose/Meta/Role/Application.pm
Statements Executed 15
Total Time 0.0009856 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sMoose::Meta::Role::Application::::BEGINMoose::Meta::Role::Application::BEGIN
0000s0sMoose::Meta::Role::Application::::__ANON__[:14]Moose::Meta::Role::Application::__ANON__[:14]
0000s0sMoose::Meta::Role::Application::::__ANON__[:20]Moose::Meta::Role::Application::__ANON__[:20]
0000s0sMoose::Meta::Role::Application::::applyMoose::Meta::Role::Application::apply
0000s0sMoose::Meta::Role::Application::::apply_after_method_modifiersMoose::Meta::Role::Application::apply_after_method_modifiers
0000s0sMoose::Meta::Role::Application::::apply_around_method_modifiersMoose::Meta::Role::Application::apply_around_method_modifiers
0000s0sMoose::Meta::Role::Application::::apply_attributesMoose::Meta::Role::Application::apply_attributes
0000s0sMoose::Meta::Role::Application::::apply_before_method_modifiersMoose::Meta::Role::Application::apply_before_method_modifiers
0000s0sMoose::Meta::Role::Application::::apply_method_modifiersMoose::Meta::Role::Application::apply_method_modifiers
0000s0sMoose::Meta::Role::Application::::apply_methodsMoose::Meta::Role::Application::apply_methods
0000s0sMoose::Meta::Role::Application::::apply_override_method_modifiersMoose::Meta::Role::Application::apply_override_method_modifiers
0000s0sMoose::Meta::Role::Application::::check_required_attributesMoose::Meta::Role::Application::check_required_attributes
0000s0sMoose::Meta::Role::Application::::check_required_methodsMoose::Meta::Role::Application::check_required_methods
0000s0sMoose::Meta::Role::Application::::check_role_exclusionsMoose::Meta::Role::Application::check_role_exclusions
0000s0sMoose::Meta::Role::Application::::is_aliased_methodMoose::Meta::Role::Application::is_aliased_method
0000s0sMoose::Meta::Role::Application::::is_method_aliasedMoose::Meta::Role::Application::is_method_aliased
0000s0sMoose::Meta::Role::Application::::is_method_excludedMoose::Meta::Role::Application::is_method_excluded
0000s0sMoose::Meta::Role::Application::::newMoose::Meta::Role::Application::new
LineStmts.Exclusive
Time
Avg.Code
1package Moose::Meta::Role::Application;
2
3326µs9µsuse strict;
# spent 9µs making 1 call to strict::import
4328µs9µsuse warnings;
# spent 30µs making 1 call to warnings::import
53845µs282µsuse metaclass;
# spent 850µs making 1 call to metaclass::import
6
71700ns700nsour $VERSION = '1.15';
8124µs24µs$VERSION = eval $VERSION;
91700ns700nsour $AUTHORITY = 'cpan:STEVAN';
10
11__PACKAGE__->meta->add_attribute('method_exclusions' => (
12 init_arg => '-excludes',
13 reader => 'get_method_exclusions',
14 default => sub { [] }
15131µs31µs));
# spent 599µs making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 39µs making 1 call to Moose::Meta::Role::Application::meta
16
17__PACKAGE__->meta->add_attribute('method_aliases' => (
18 init_arg => '-alias',
19 reader => 'get_method_aliases',
20 default => sub { {} }
21112µs12µs));
# spent 525µs making 1 call to Class::MOP::Mixin::HasAttributes::add_attribute # spent 25µs making 1 call to Moose::Meta::Role::Application::meta
22
23sub new {
24 my ($class, %params) = @_;
25
26 if ( exists $params{excludes} || exists $params{alias} ) {
27 Moose::Deprecated::deprecated(
28 feature => 'alias or excludes',
29 message =>
30 "The alias and excludes options for role application have been renamed -alias and -excludes"
31 );
32 }
33
34 if ( exists $params{excludes} && !exists $params{'-excludes'} ) {
35 $params{'-excludes'} = delete $params{excludes};
36 }
37 if ( exists $params{alias} && !exists $params{'-alias'} ) {
38 $params{'-alias'} = delete $params{alias};
39 }
40
41 if ( exists $params{'-excludes'} ) {
42
43 # I wish we had coercion here :)
44 $params{'-excludes'} = (
45 ref $params{'-excludes'} eq 'ARRAY'
46 ? $params{'-excludes'}
47 : [ $params{'-excludes'} ]
48 );
49 }
50
51 $class->_new(\%params);
52}
53
54sub is_method_excluded {
55 my ($self, $method_name) = @_;
56 foreach (@{$self->get_method_exclusions}) {
57 return 1 if $_ eq $method_name;
58 }
59 return 0;
60}
61
62sub is_method_aliased {
63 my ($self, $method_name) = @_;
64 exists $self->get_method_aliases->{$method_name} ? 1 : 0
65}
66
67sub is_aliased_method {
68 my ($self, $method_name) = @_;
69 my %aliased_names = reverse %{$self->get_method_aliases};
70 exists $aliased_names{$method_name} ? 1 : 0;
71}
72
73sub apply {
74 my $self = shift;
75
76 $self->check_role_exclusions(@_);
77 $self->check_required_methods(@_);
78 $self->check_required_attributes(@_);
79
80 $self->apply_attributes(@_);
81 $self->apply_methods(@_);
82
83 $self->apply_override_method_modifiers(@_);
84
85 $self->apply_before_method_modifiers(@_);
86 $self->apply_around_method_modifiers(@_);
87 $self->apply_after_method_modifiers(@_);
88}
89
90sub check_role_exclusions { Carp::croak "Abstract Method" }
91sub check_required_methods { Carp::croak "Abstract Method" }
92sub check_required_attributes { Carp::croak "Abstract Method" }
93
94sub apply_attributes { Carp::croak "Abstract Method" }
95sub apply_methods { Carp::croak "Abstract Method" }
96sub apply_override_method_modifiers { Carp::croak "Abstract Method" }
97sub apply_method_modifiers { Carp::croak "Abstract Method" }
98
99sub apply_before_method_modifiers { (shift)->apply_method_modifiers('before' => @_) }
100sub apply_around_method_modifiers { (shift)->apply_method_modifiers('around' => @_) }
101sub apply_after_method_modifiers { (shift)->apply_method_modifiers('after' => @_) }
102
103118µs18µs1;
104
105__END__
106
107=pod
108
109=head1 NAME
110
111Moose::Meta::Role::Application - A base class for role application
112
113=head1 DESCRIPTION
114
115This is the abstract base class for role applications.
116
117The API for this class and its subclasses still needs some
118consideration, and is intentionally not yet documented.
119
120=head2 METHODS
121
122=over 4
123
124=item B<new>
125
126=item B<meta>
127
128=item B<get_method_exclusions>
129
130=item B<is_method_excluded>
131
132=item B<get_method_aliases>
133
134=item B<is_aliased_method>
135
136=item B<is_method_aliased>
137
138=item B<apply>
139
140=item B<check_role_exclusions>
141
142=item B<check_required_methods>
143
144=item B<check_required_attributes>
145
146=item B<apply_attributes>
147
148=item B<apply_methods>
149
150=item B<apply_method_modifiers>
151
152=item B<apply_before_method_modifiers>
153
154=item B<apply_after_method_modifiers>
155
156=item B<apply_around_method_modifiers>
157
158=item B<apply_override_method_modifiers>
159
160=back
161
162=head1 BUGS
163
164See L<Moose/BUGS> for details on reporting bugs.
165
166=head1 AUTHOR
167
168Stevan Little E<lt>stevan@iinteractive.comE<gt>
169
170=head1 COPYRIGHT AND LICENSE
171
172Copyright 2006-2010 by Infinity Interactive, Inc.
173
174L<http://www.iinteractive.com>
175
176This library is free software; you can redistribute it and/or modify
177it under the same terms as Perl itself.
178
179=cut
180