X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FClassAttribute.pm;h=065ec7999ed472e712a020bf95c5683ec8b53b80;hb=1bf043fb49542c778ff7c6d5576b75a726384f91;hp=772ca85757f87ad44dd235f5fed4392f4b0df5a3;hpb=7f8bac2f49eb3b198569f3d7b1dafebd6b89fecc;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/lib/MooseX/ClassAttribute.pm b/lib/MooseX/ClassAttribute.pm index 772ca85..065ec79 100644 --- a/lib/MooseX/ClassAttribute.pm +++ b/lib/MooseX/ClassAttribute.pm @@ -3,42 +3,49 @@ package MooseX::ClassAttribute; use strict; use warnings; -our $VERSION = '0.09'; +our $VERSION = '0.10'; our $AUTHORITY = 'cpan:DROLSKY'; -use Moose 0.74 (); +use Moose 0.89 (); use Moose::Exporter; -use MooseX::ClassAttribute::Role::Meta::Class; +use MooseX::ClassAttribute::Trait::Class; +use MooseX::ClassAttribute::Trait::Role; +use MooseX::ClassAttribute::Trait::Application::ToClass; +use MooseX::ClassAttribute::Trait::Application::ToRole; +use MooseX::ClassAttribute::Trait::Application::ToInstance; -Moose::Exporter->setup_import_methods - ( with_caller => [ 'class_has' ] ); +Moose::Exporter->setup_import_methods( with_meta => ['class_has'] ); - -sub init_meta -{ +sub init_meta { shift; my %p = @_; - Moose->init_meta(%p); - - return - Moose::Util::MetaRole::apply_metaclass_roles - ( for_class => $p{for_class}, - metaclass_roles => [ 'MooseX::ClassAttribute::Role::Meta::Class' ], - ); + return Moose::Util::MetaRole::apply_metaclass_roles( + for => $p{for_class}, + class_metaroles => { + class => ['MooseX::ClassAttribute::Trait::Class'], + }, + role_metaroles => { + role => ['MooseX::ClassAttribute::Trait::Role'], + application_to_class => + ['MooseX::ClassAttribute::Trait::Application::ToClass'], + application_to_role => + ['MooseX::ClassAttribute::Trait::Application::ToRole'], + application_to_instance => [ + 'MooseX::ClassAttribute::Trait::Application::ToInstance' + ], + }, + ); } -sub class_has -{ - my $caller = shift; +sub class_has { + my $meta = shift; my $name = shift; my %options = @_; my $attrs = ref $name eq 'ARRAY' ? $name : [$name]; - Class::MOP::class_of($caller) - ->add_class_attribute( $_, %options ) - for @{ $attrs }; + $meta->add_class_attribute( $_, %options ) for @{$attrs}; } 1; @@ -73,7 +80,6 @@ MooseX::ClassAttribute - Declare class attributes Moose-style My::Class->Cache()->{thing} = ...; - =head1 DESCRIPTION This module allows you to declare class attributes in exactly the same @@ -100,11 +106,11 @@ C as well. =head2 Implementation and Immutability This module will add a role to your class's metaclass, See -L for details. This role +L for details. This role provides introspection methods for class attributes. Class attributes themselves do the -L role. +L role. There is also a L which provides part of the inlining implementation for class