X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FAttrContainer.pm;h=e83706bcad6ad06fd56c7667d2b2feb08c6cfe25;hb=a7caa492274a184c77ec32af58b2dc6db7295650;hp=31178249f31483edfad77e89a9b2e3331d1cfeaf;hpb=6323fda2e7ace0fc0aa06305c674957cedc6d025;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/AttrContainer.pm b/lib/Catalyst/AttrContainer.pm index 3117824..e83706b 100644 --- a/lib/Catalyst/AttrContainer.pm +++ b/lib/Catalyst/AttrContainer.pm @@ -1,36 +1,18 @@ package Catalyst::AttrContainer; use Moose; -#use MooseX::ClassAttribute; use Catalyst::Exception; -use Class::Data::Inheritable; -{ - my $mk_classdata = Class::Data::Inheritable->can('mk_classdata'); - __PACKAGE__->meta->add_method(mk_classdata => $mk_classdata); -} -__PACKAGE__->mk_classdata(_attr_cache => {}); -__PACKAGE__->mk_classdata(_action_cache => []); - -# class_has _attr_cache => ( -# is => 'rw', -# isa => 'HashRef', -# required => 1, -# default => sub{{}} -# ); -# class_has _action_cache => ( -# is => 'rw', -# isa => 'ArrayRef', -# required => 1, -# default => sub{ [] } -# ); +with 'Catalyst::ClassData'; + +__PACKAGE__->mk_classdata($_) for qw/_attr_cache _action_cache/; +__PACKAGE__->_attr_cache( {} ); +__PACKAGE__->_action_cache( [] ); # note - see attributes(3pm) sub MODIFY_CODE_ATTRIBUTES { my ( $class, $code, @attrs ) = @_; - #can't the below just be $class->_attr_cache->{$code} = \@attrs; ? $class->_attr_cache( { %{ $class->_attr_cache }, $code => [@attrs] } ); - #why can't this just be push @{$class->_action_cache}, [$code, \@attrs] ? $class->_action_cache( [ @{ $class->_action_cache }, [ $code, [@attrs] ] ] ); return ();