File | /usr/local/lib/perl/5.10.0/Moose/Meta/Role/Application.pm |
Statements Executed | 15 |
Total Time | 0.0009856 seconds |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
0 | 0 | 0 | 0s | 0s | BEGIN | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | __ANON__[:14] | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | __ANON__[:20] | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_after_method_modifiers | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_around_method_modifiers | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_attributes | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_before_method_modifiers | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_method_modifiers | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_methods | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | apply_override_method_modifiers | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | check_required_attributes | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | check_required_methods | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | check_role_exclusions | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | is_aliased_method | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | is_method_aliased | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | is_method_excluded | Moose::Meta::Role::Application::
0 | 0 | 0 | 0s | 0s | new | Moose::Meta::Role::Application::
Line | Stmts. | Exclusive Time | Avg. | Code |
---|---|---|---|---|
1 | package Moose::Meta::Role::Application; | |||
2 | ||||
3 | 3 | 26µs | 9µs | use strict; # spent 9µs making 1 call to strict::import |
4 | 3 | 28µs | 9µs | use warnings; # spent 30µs making 1 call to warnings::import |
5 | 3 | 845µs | 282µs | use metaclass; # spent 850µs making 1 call to metaclass::import |
6 | ||||
7 | 1 | 700ns | 700ns | our $VERSION = '1.15'; |
8 | 1 | 24µs | 24µs | $VERSION = eval $VERSION; |
9 | 1 | 700ns | 700ns | our $AUTHORITY = 'cpan:STEVAN'; |
10 | ||||
11 | __PACKAGE__->meta->add_attribute('method_exclusions' => ( | |||
12 | init_arg => '-excludes', | |||
13 | reader => 'get_method_exclusions', | |||
14 | default => sub { [] } | |||
15 | 1 | 31µs | 31µ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 { {} } | |||
21 | 1 | 12µs | 12µ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 | ||||
23 | sub 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 | ||||
54 | sub 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 | ||||
62 | sub is_method_aliased { | |||
63 | my ($self, $method_name) = @_; | |||
64 | exists $self->get_method_aliases->{$method_name} ? 1 : 0 | |||
65 | } | |||
66 | ||||
67 | sub 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 | ||||
73 | sub 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 | ||||
90 | sub check_role_exclusions { Carp::croak "Abstract Method" } | |||
91 | sub check_required_methods { Carp::croak "Abstract Method" } | |||
92 | sub check_required_attributes { Carp::croak "Abstract Method" } | |||
93 | ||||
94 | sub apply_attributes { Carp::croak "Abstract Method" } | |||
95 | sub apply_methods { Carp::croak "Abstract Method" } | |||
96 | sub apply_override_method_modifiers { Carp::croak "Abstract Method" } | |||
97 | sub apply_method_modifiers { Carp::croak "Abstract Method" } | |||
98 | ||||
99 | sub apply_before_method_modifiers { (shift)->apply_method_modifiers('before' => @_) } | |||
100 | sub apply_around_method_modifiers { (shift)->apply_method_modifiers('around' => @_) } | |||
101 | sub apply_after_method_modifiers { (shift)->apply_method_modifiers('after' => @_) } | |||
102 | ||||
103 | 1 | 18µs | 18µs | 1; |
104 | ||||
105 | __END__ | |||
106 | ||||
107 | =pod | |||
108 | ||||
109 | =head1 NAME | |||
110 | ||||
111 | Moose::Meta::Role::Application - A base class for role application | |||
112 | ||||
113 | =head1 DESCRIPTION | |||
114 | ||||
115 | This is the abstract base class for role applications. | |||
116 | ||||
117 | The API for this class and its subclasses still needs some | |||
118 | consideration, 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 | ||||
164 | See L<Moose/BUGS> for details on reporting bugs. | |||
165 | ||||
166 | =head1 AUTHOR | |||
167 | ||||
168 | Stevan Little E<lt>stevan@iinteractive.comE<gt> | |||
169 | ||||
170 | =head1 COPYRIGHT AND LICENSE | |||
171 | ||||
172 | Copyright 2006-2010 by Infinity Interactive, Inc. | |||
173 | ||||
174 | L<http://www.iinteractive.com> | |||
175 | ||||
176 | This library is free software; you can redistribute it and/or modify | |||
177 | it under the same terms as Perl itself. | |||
178 | ||||
179 | =cut | |||
180 |