Commit | Line | Data |
ba599d1c |
1 | package Catalyst::AttrContainer; |
2 | |
3 | use strict; |
4 | use base qw/Class::Data::Inheritable Class::Accessor::Fast/; |
5 | |
6 | use Catalyst::Exception; |
7 | use NEXT; |
8 | |
9 | __PACKAGE__->mk_classdata($_) for qw/_attr_cache _action_cache/; |
10 | __PACKAGE__->_attr_cache( {} ); |
11 | __PACKAGE__->_action_cache( [] ); |
12 | |
13 | # note - see attributes(3pm) |
14 | sub MODIFY_CODE_ATTRIBUTES { |
15 | my ( $class, $code, @attrs ) = @_; |
97e14a03 |
16 | return if ( ( $attrs[0] eq 'lvalue' ) && ( @attrs == 1 ) ); |
57e45928 |
17 | $class->_attr_cache( { %{ $class->_attr_cache }, $code => [@attrs] } ); |
18 | $class->_action_cache( |
19 | [ @{ $class->_action_cache }, [ $code, [@attrs] ] ] ); |
ba599d1c |
20 | return (); |
21 | } |
22 | |
23 | sub FETCH_CODE_ATTRIBUTES { $_[0]->_attr_cache->{ $_[1] } || () } |
24 | |
25 | =head1 NAME |
26 | |
27 | Catalyst::AttrContainer |
28 | |
29 | =head1 SYNOPSIS |
30 | |
31 | =head1 DESCRIPTION |
32 | |
33 | =head1 METHODS |
34 | |
35 | =over 4 |
36 | |
37 | =item FETCH_CODE_ATTRIBUTES |
38 | |
39 | =item MODIFY_CODE_ATTRIBUTES |
40 | |
41 | =back |
42 | |
43 | =head1 SEE ALSO |
44 | |
45 | L<Catalyst>. |
46 | |
47 | =head1 AUTHOR |
48 | |
49 | Sebastian Riedel, C<sri@cpan.org> |
50 | Marcus Ramberg, C<mramberg@cpan.org> |
51 | |
52 | =head1 COPYRIGHT |
53 | |
54 | This program is free software, you can redistribute it and/or modify it under |
55 | the same terms as Perl itself. |
56 | |
57 | =cut |
58 | |
59 | 1; |