Profile of /usr/local/lib/perl5/site_perl/5.10.1/MooseX/AttributeHelpers.pm

← Index
NYTProf Performance Profile «block view•line view•sub view»
For 05.Domain_and_Item.t
Run on Tue May 4 17:21:41 2010
Reported on Tue May 4 17:23:09 2010

File | /usr/local/lib/perl5/site_perl/5.10.1/MooseX/AttributeHelpers.pm
Statements Executed | 67
Statement Execution Time | 2.83ms

Subroutines — ordered by exclusive time
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 633µs | 5.11ms | MooseX::AttributeHelpers::::BEGIN@15MooseX::AttributeHelpers::BEGIN@15
1 | 1 | 1 | 436µs | 7.04ms | MooseX::AttributeHelpers::::BEGIN@14MooseX::AttributeHelpers::BEGIN@14
1 | 1 | 1 | 399µs | 12.5ms | MooseX::AttributeHelpers::::BEGIN@21MooseX::AttributeHelpers::BEGIN@21
1 | 1 | 1 | 380µs | 6.40ms | MooseX::AttributeHelpers::::BEGIN@16MooseX::AttributeHelpers::BEGIN@16
1 | 1 | 1 | 352µs | 12.7ms | MooseX::AttributeHelpers::::BEGIN@30MooseX::AttributeHelpers::BEGIN@30
1 | 1 | 1 | 308µs | 14.5ms | MooseX::AttributeHelpers::::BEGIN@13MooseX::AttributeHelpers::BEGIN@13
1 | 1 | 1 | 293µs | 11.9ms | MooseX::AttributeHelpers::::BEGIN@31MooseX::AttributeHelpers::BEGIN@31
1 | 1 | 1 | 292µs | 11.3ms | MooseX::AttributeHelpers::::BEGIN@28MooseX::AttributeHelpers::BEGIN@28
1 | 1 | 1 | 277µs | 11.5ms | MooseX::AttributeHelpers::::BEGIN@18MooseX::AttributeHelpers::BEGIN@18
1 | 1 | 1 | 276µs | 10.2ms | MooseX::AttributeHelpers::::BEGIN@24MooseX::AttributeHelpers::BEGIN@24
1 | 1 | 1 | 275µs | 11.0ms | MooseX::AttributeHelpers::::BEGIN@27MooseX::AttributeHelpers::BEGIN@27
1 | 1 | 1 | 274µs | 11.5ms | MooseX::AttributeHelpers::::BEGIN@29MooseX::AttributeHelpers::BEGIN@29
1 | 1 | 1 | 268µs | 4.03ms | MooseX::AttributeHelpers::::BEGIN@20MooseX::AttributeHelpers::BEGIN@20
1 | 1 | 1 | 260µs | 13.5ms | MooseX::AttributeHelpers::::BEGIN@23MooseX::AttributeHelpers::BEGIN@23
1 | 1 | 1 | 250µs | 11.0ms | MooseX::AttributeHelpers::::BEGIN@25MooseX::AttributeHelpers::BEGIN@25
1 | 1 | 1 | 248µs | 11.2ms | MooseX::AttributeHelpers::::BEGIN@26MooseX::AttributeHelpers::BEGIN@26
1 | 1 | 1 | 247µs | 12.0ms | MooseX::AttributeHelpers::::BEGIN@19MooseX::AttributeHelpers::BEGIN@19
1 | 1 | 1 | 245µs | 9.92ms | MooseX::AttributeHelpers::::BEGIN@17MooseX::AttributeHelpers::BEGIN@17
1 | 1 | 1 | 191µs | 2.72ms | MooseX::AttributeHelpers::::BEGIN@10MooseX::AttributeHelpers::BEGIN@10
1 | 1 | 1 | 177µs | 2.47ms | MooseX::AttributeHelpers::::BEGIN@11MooseX::AttributeHelpers::BEGIN@11
1 | 1 | 1 | 19µs | 40µs | MooseX::AttributeHelpers::::BEGIN@8MooseX::AttributeHelpers::BEGIN@8

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  |
2 |  |  |  |  | package MooseX::AttributeHelpers;
3 |  |  |  |  |
4 | 1 | 900ns |  |  | our $VERSION = '0.23';
5 | 1 | 15µs |  |  | $VERSION = eval $VERSION;
6 | 1 | 400ns |  |  | our $AUTHORITY = 'cpan:STEVAN';
7 |  |  |  |  |
8 | 3 | 53µs | 2 | 60µs | # spent 40µs (19+21) within MooseX::AttributeHelpers::BEGIN@8 which was called # once (19µs+21µs) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 8 use Moose 0.56 (); # spent 40µs making 1 call to MooseX::AttributeHelpers::BEGIN@8 # spent 21µs making 1 call to UNIVERSAL::VERSION
9 |  |  |  |  |
10 | 3 | 127µs | 1 | 2.72ms | # spent 2.72ms (191µs+2.53) within MooseX::AttributeHelpers::BEGIN@10 which was called # once (191µs+2.53ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 10 use MooseX::AttributeHelpers::Meta::Method::Provided; # spent 2.72ms making 1 call to MooseX::AttributeHelpers::BEGIN@10
11 | 3 | 114µs | 1 | 2.47ms | # spent 2.47ms (177µs+2.29) within MooseX::AttributeHelpers::BEGIN@11 which was called # once (177µs+2.29ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 11 use MooseX::AttributeHelpers::Meta::Method::Curried; # spent 2.47ms making 1 call to MooseX::AttributeHelpers::BEGIN@11
12 |  |  |  |  |
13 | 3 | 116µs | 1 | 14.5ms | # spent 14.5ms (308µs+14.2) within MooseX::AttributeHelpers::BEGIN@13 which was called # once (308µs+14.2ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 13 use MooseX::AttributeHelpers::Trait::Bool; # spent 14.5ms making 1 call to MooseX::AttributeHelpers::BEGIN@13
14 | 3 | 143µs | 1 | 7.04ms | # spent 7.04ms (436µs+6.60) within MooseX::AttributeHelpers::BEGIN@14 which was called # once (436µs+6.60ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 14 use MooseX::AttributeHelpers::Trait::Counter; # spent 7.04ms making 1 call to MooseX::AttributeHelpers::BEGIN@14
15 | 3 | 160µs | 1 | 5.11ms | # spent 5.11ms (633µs+4.47) within MooseX::AttributeHelpers::BEGIN@15 which was called # once (633µs+4.47ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 15 use MooseX::AttributeHelpers::Trait::Number; # spent 5.11ms making 1 call to MooseX::AttributeHelpers::BEGIN@15
16 | 3 | 111µs | 1 | 6.40ms | # spent 6.40ms (380µs+6.02) within MooseX::AttributeHelpers::BEGIN@16 which was called # once (380µs+6.02ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 16 use MooseX::AttributeHelpers::Trait::String; # spent 6.40ms making 1 call to MooseX::AttributeHelpers::BEGIN@16
17 | 3 | 113µs | 1 | 9.92ms | # spent 9.92ms (245µs+9.68) within MooseX::AttributeHelpers::BEGIN@17 which was called # once (245µs+9.68ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 17 use MooseX::AttributeHelpers::Trait::Collection::List; # spent 9.92ms making 1 call to MooseX::AttributeHelpers::BEGIN@17
18 | 3 | 121µs | 1 | 11.5ms | # spent 11.5ms (277µs+11.2) within MooseX::AttributeHelpers::BEGIN@18 which was called # once (277µs+11.2ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 18 use MooseX::AttributeHelpers::Trait::Collection::Array; # spent 11.5ms making 1 call to MooseX::AttributeHelpers::BEGIN@18
19 | 3 | 112µs | 1 | 12.0ms | # spent 12.0ms (247µs+11.7) within MooseX::AttributeHelpers::BEGIN@19 which was called # once (247µs+11.7ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 19 use MooseX::AttributeHelpers::Trait::Collection::Hash; # spent 12.0ms making 1 call to MooseX::AttributeHelpers::BEGIN@19
20 | 3 | 125µs | 1 | 4.03ms | # spent 4.03ms (268µs+3.76) within MooseX::AttributeHelpers::BEGIN@20 which was called # once (268µs+3.76ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 20 use MooseX::AttributeHelpers::Trait::Collection::ImmutableHash; # spent 4.03ms making 1 call to MooseX::AttributeHelpers::BEGIN@20
21 | 3 | 125µs | 1 | 12.5ms | # spent 12.5ms (399µs+12.1) within MooseX::AttributeHelpers::BEGIN@21 which was called # once (399µs+12.1ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 21 use MooseX::AttributeHelpers::Trait::Collection::Bag; # spent 12.5ms making 1 call to MooseX::AttributeHelpers::BEGIN@21
22 |  |  |  |  |
23 | 3 | 131µs | 1 | 13.5ms | # spent 13.5ms (260µs+13.2) within MooseX::AttributeHelpers::BEGIN@23 which was called # once (260µs+13.2ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 23 use MooseX::AttributeHelpers::Counter; # spent 13.5ms making 1 call to MooseX::AttributeHelpers::BEGIN@23
24 | 3 | 140µs | 1 | 10.2ms | # spent 10.2ms (276µs+9.92) within MooseX::AttributeHelpers::BEGIN@24 which was called # once (276µs+9.92ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 24 use MooseX::AttributeHelpers::Number; # spent 10.2ms making 1 call to MooseX::AttributeHelpers::BEGIN@24
25 | 3 | 136µs | 1 | 11.0ms | # spent 11.0ms (250µs+10.8) within MooseX::AttributeHelpers::BEGIN@25 which was called # once (250µs+10.8ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 25 use MooseX::AttributeHelpers::String; # spent 11.0ms making 1 call to MooseX::AttributeHelpers::BEGIN@25
26 | 3 | 131µs | 1 | 11.2ms | # spent 11.2ms (248µs+11.0) within MooseX::AttributeHelpers::BEGIN@26 which was called # once (248µs+11.0ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 26 use MooseX::AttributeHelpers::Bool; # spent 11.2ms making 1 call to MooseX::AttributeHelpers::BEGIN@26
27 | 3 | 139µs | 1 | 11.0ms | # spent 11.0ms (275µs+10.7) within MooseX::AttributeHelpers::BEGIN@27 which was called # once (275µs+10.7ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 27 use MooseX::AttributeHelpers::Collection::List; # spent 11.0ms making 1 call to MooseX::AttributeHelpers::BEGIN@27
28 | 3 | 170µs | 1 | 11.3ms | # spent 11.3ms (292µs+11.0) within MooseX::AttributeHelpers::BEGIN@28 which was called # once (292µs+11.0ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 28 use MooseX::AttributeHelpers::Collection::Array; # spent 11.3ms making 1 call to MooseX::AttributeHelpers::BEGIN@28
29 | 3 | 151µs | 1 | 11.5ms | # spent 11.5ms (274µs+11.2) within MooseX::AttributeHelpers::BEGIN@29 which was called # once (274µs+11.2ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 29 use MooseX::AttributeHelpers::Collection::Hash; # spent 11.5ms making 1 call to MooseX::AttributeHelpers::BEGIN@29
30 | 3 | 188µs | 1 | 12.7ms | # spent 12.7ms (352µs+12.3) within MooseX::AttributeHelpers::BEGIN@30 which was called # once (352µs+12.3ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 30 use MooseX::AttributeHelpers::Collection::ImmutableHash; # spent 12.7ms making 1 call to MooseX::AttributeHelpers::BEGIN@30
31 | 3 | 198µs | 1 | 11.9ms | # spent 11.9ms (293µs+11.6) within MooseX::AttributeHelpers::BEGIN@31 which was called # once (293µs+11.6ms) by MooseX::ClassAttribute::Role::Meta::Class::BEGIN@6 at line 31 use MooseX::AttributeHelpers::Collection::Bag; # spent 11.9ms making 1 call to MooseX::AttributeHelpers::BEGIN@31
32 |  |  |  |  |
33 | 1 | 5µs |  |  | 1;
34 |  |  |  |  |
35 |  |  |  |  | __END__
36 |  |  |  |  |
37 |  |  |  |  | =pod
38 |  |  |  |  |
39 |  |  |  |  | =head1 NAME
40 |  |  |  |  |
41 |  |  |  |  | MooseX::AttributeHelpers - Extend your attribute interfaces (deprecated)
42 |  |  |  |  |
43 |  |  |  |  | =head1 SYNOPSIS
44 |  |  |  |  |
45 |  |  |  |  | package MyClass;
46 |  |  |  |  | use Moose;
47 |  |  |  |  | use MooseX::AttributeHelpers;
48 |  |  |  |  |
49 |  |  |  |  | has 'mapping' => (
50 |  |  |  |  | metaclass => 'Collection::Hash',
51 |  |  |  |  | is => 'rw',
52 |  |  |  |  | isa => 'HashRef[Str]',
53 |  |  |  |  | default => sub { {} },
54 |  |  |  |  | provides => {
55 |  |  |  |  | exists => 'exists_in_mapping',
56 |  |  |  |  | keys => 'ids_in_mapping',
57 |  |  |  |  | get => 'get_mapping',
58 |  |  |  |  | set => 'set_mapping',
59 |  |  |  |  | },
60 |  |  |  |  | curries => {
61 |  |  |  |  | set => { set_quantity => [ 'quantity' ] }
62 |  |  |  |  | }
63 |  |  |  |  | );
64 |  |  |  |  |
65 |  |  |  |  |
66 |  |  |  |  | # ...
67 |  |  |  |  |
68 |  |  |  |  | my $obj = MyClass->new;
69 |  |  |  |  | $obj->set_quantity(10); # quantity => 10
70 |  |  |  |  | $obj->set_mapping(4, 'foo'); # 4 => 'foo'
71 |  |  |  |  | $obj->set_mapping(5, 'bar'); # 5 => 'bar'
72 |  |  |  |  | $obj->set_mapping(6, 'baz'); # 6 => 'baz'
73 |  |  |  |  |
74 |  |  |  |  |
75 |  |  |  |  | # prints 'bar'
76 |  |  |  |  | print $obj->get_mapping(5) if $obj->exists_in_mapping(5);
77 |  |  |  |  |
78 |  |  |  |  | # prints '4, 5, 6'
79 |  |  |  |  | print join ', ', $obj->ids_in_mapping;
80 |  |  |  |  |
81 |  |  |  |  | =head1 DESCRIPTION
82 |  |  |  |  |
83 |  |  |  |  | B<This distribution is deprecated. The features it provides have been added to
84 |  |  |  |  | the Moose core code as L<Moose::Meta::Attribute::Native>. This distribution
85 |  |  |  |  | should not be used by any new code.>
86 |  |  |  |  |
87 |  |  |  |  | While L<Moose> attributes provide you with a way to name your accessors,
88 |  |  |  |  | readers, writers, clearers and predicates, this library provides commonly
89 |  |  |  |  | used attribute helper methods for more specific types of data.
90 |  |  |  |  |
91 |  |  |  |  | As seen in the L</SYNOPSIS>, you specify the extension via the
92 |  |  |  |  | C<metaclass> parameter. Available meta classes are:
93 |  |  |  |  |
94 |  |  |  |  | =head1 PARAMETERS
95 |  |  |  |  |
96 |  |  |  |  | =head2 provides
97 |  |  |  |  |
98 |  |  |  |  | This points to a hashref that uses C<provider> for the keys and
99 |  |  |  |  | C<method> for the values. The method will be added to
100 |  |  |  |  | the object itself and do what you want.
101 |  |  |  |  |
102 |  |  |  |  | =head2 curries
103 |  |  |  |  |
104 |  |  |  |  | This points to a hashref that uses C<provider> for the keys and
105 |  |  |  |  | has two choices for the value:
106 |  |  |  |  |
107 |  |  |  |  | You can supply C<< {method => [ @args ]} >> for the values. The method will be
108 |  |  |  |  | added to the object itself (always using C<@args> as the beginning arguments).
109 |  |  |  |  |
110 |  |  |  |  | Another approach to curry a method provider is to supply a coderef instead of an
111 |  |  |  |  | arrayref. The code ref takes C<$self>, C<$body>, and any additional arguments
112 |  |  |  |  | passed to the final method.
113 |  |  |  |  |
114 |  |  |  |  | # ...
115 |  |  |  |  |
116 |  |  |  |  | curries => {
117 |  |  |  |  | grep => {
118 |  |  |  |  | times_with_day => sub {
119 |  |  |  |  | my ($self, $body, $datetime) = @_;
120 |  |  |  |  | $body->($self, sub { $_->ymd eq $datetime->ymd });
121 |  |  |  |  | }
122 |  |  |  |  | }
123 |  |  |  |  | }
124 |  |  |  |  |
125 |  |  |  |  | # ...
126 |  |  |  |  |
127 |  |  |  |  | $obj->times_with_day(DateTime->now); # takes datetime argument, checks day
128 |  |  |  |  |
129 |  |  |  |  |
130 |  |  |  |  | =head1 METHOD PROVIDERS
131 |  |  |  |  |
132 |  |  |  |  | =over
133 |  |  |  |  |
134 |  |  |  |  | =item L<Number|MooseX::AttributeHelpers::Number>
135 |  |  |  |  |
136 |  |  |  |  | Common numerical operations.
137 |  |  |  |  |
138 |  |  |  |  | =item L<String|MooseX::AttributeHelpers::String>
139 |  |  |  |  |
140 |  |  |  |  | Common methods for string operations.
141 |  |  |  |  |
142 |  |  |  |  | =item L<Counter|MooseX::AttributeHelpers::Counter>
143 |  |  |  |  |
144 |  |  |  |  | Methods for incrementing and decrementing a counter attribute.
145 |  |  |  |  |
146 |  |  |  |  | =item L<Bool|MooseX::AttributeHelpers::Bool>
147 |  |  |  |  |
148 |  |  |  |  | Common methods for boolean values.
149 |  |  |  |  |
150 |  |  |  |  | =item L<Collection::Hash|MooseX::AttributeHelpers::Collection::Hash>
151 |  |  |  |  |
152 |  |  |  |  | Common methods for hash references.
153 |  |  |  |  |
154 |  |  |  |  | =item L<Collection::ImmutableHash|MooseX::AttributeHelpers::Collection::ImmutableHash>
155 |  |  |  |  |
156 |  |  |  |  | Common methods for inspecting hash references.
157 |  |  |  |  |
158 |  |  |  |  | =item L<Collection::Array|MooseX::AttributeHelpers::Collection::Array>
159 |  |  |  |  |
160 |  |  |  |  | Common methods for array references.
161 |  |  |  |  |
162 |  |  |  |  | =item L<Collection::List|MooseX::AttributeHelpers::Collection::List>
163 |  |  |  |  |
164 |  |  |  |  | Common list methods for array references.
165 |  |  |  |  |
166 |  |  |  |  | =back
167 |  |  |  |  |
168 |  |  |  |  | =head1 CAVEAT
169 |  |  |  |  |
170 |  |  |  |  | This is an early release of this module. Right now it is in great need
171 |  |  |  |  | of documentation and tests in the test suite. However, we have used this
172 |  |  |  |  | module to great success at C<$work> where it has been tested very thoroughly
173 |  |  |  |  | and deployed into a major production site.
174 |  |  |  |  |
175 |  |  |  |  | I plan on getting better docs and tests in the next few releases, but until
176 |  |  |  |  | then please refer to the few tests we do have and feel free email and/or
177 |  |  |  |  | message me on irc.perl.org if you have any questions.
178 |  |  |  |  |
179 |  |  |  |  | =head1 TODO
180 |  |  |  |  |
181 |  |  |  |  | We need tests and docs badly.
182 |  |  |  |  |
183 |  |  |  |  | =head1 BUGS
184 |  |  |  |  |
185 |  |  |  |  | All complex software has bugs lurking in it, and this module is no
186 |  |  |  |  | exception. If you find a bug please either email me, or add the bug
187 |  |  |  |  | to cpan-RT.
188 |  |  |  |  |
189 |  |  |  |  | =head1 AUTHOR
190 |  |  |  |  |
191 |  |  |  |  | Stevan Little E<lt>stevan@iinteractive.comE<gt>
192 |  |  |  |  |
193 |  |  |  |  | B<with contributions from:>
194 |  |  |  |  |
195 |  |  |  |  | Robert (rlb3) Boone
196 |  |  |  |  |
197 |  |  |  |  | Paul (frodwith) Driver
198 |  |  |  |  |
199 |  |  |  |  | Shawn (Sartak) Moore
200 |  |  |  |  |
201 |  |  |  |  | Chris (perigrin) Prather
202 |  |  |  |  |
203 |  |  |  |  | Robert (phaylon) Sedlacek
204 |  |  |  |  |
205 |  |  |  |  | Tom (dec) Lanyon
206 |  |  |  |  |
207 |  |  |  |  | Yuval Kogman
208 |  |  |  |  |
209 |  |  |  |  | Jason May
210 |  |  |  |  |
211 |  |  |  |  | Cory (gphat) Watson
212 |  |  |  |  |
213 |  |  |  |  | Florian (rafl) Ragwitz
214 |  |  |  |  |
215 |  |  |  |  | Evan Carroll
216 |  |  |  |  |
217 |  |  |  |  | Jesse (doy) Luehrs
218 |  |  |  |  |
219 |  |  |  |  | =head1 COPYRIGHT AND LICENSE
220 |  |  |  |  |
221 |  |  |  |  | Copyright 2007-2009 by Infinity Interactive, Inc.
222 |  |  |  |  |
223 |  |  |  |  | L<http://www.iinteractive.com>
224 |  |  |  |  |
225 |  |  |  |  | This library is free software; you can redistribute it and/or modify
226 |  |  |  |  | it under the same terms as Perl itself.
227 |  |  |  |  |
228 |  |  |  |  | =cut