X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FClassAttribute.pm;h=c43eccdb28b8474adc35749ba07d7444a01f3d86;hb=b0871254d569eb8f5c63d806b22d38689d05534f;hp=5de825715da7fc261a898334881761e054dba602;hpb=0388e669286b6625e3bb5c1afdeaec3b01335a91;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/lib/MooseX/ClassAttribute.pm b/lib/MooseX/ClassAttribute.pm index 5de8257..c43eccd 100644 --- a/lib/MooseX/ClassAttribute.pm +++ b/lib/MooseX/ClassAttribute.pm @@ -3,61 +3,55 @@ package MooseX::ClassAttribute; use strict; use warnings; -our $VERSION = '0.10'; -our $AUTHORITY = 'cpan:DROLSKY'; - -use Moose 0.96 (); +use Moose 1.23 (); use Moose::Exporter; +use Moose::Util; 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_meta => ['class_has'] ); - -sub init_meta { - shift; - my %p = @_; - - 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' - ], - }, - ); -} + +Moose::Exporter->setup_import_methods( + with_meta => ['class_has'], + 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'], + }, +); sub class_has { my $meta = shift; my $name = shift; - my %options = @_; my $attrs = ref $name eq 'ARRAY' ? $name : [$name]; + my %options = ( definition_context => _caller_info(), @_ ); + $meta->add_class_attribute( $_, %options ) for @{$attrs}; } +# Copied from Moose::Util in 2.06 +sub _caller_info { + my $level = @_ ? ($_[0] + 1) : 2; + my %info; + @info{qw(package file line)} = caller($level); + return \%info; +} + 1; +# ABSTRACT: Declare class attributes Moose-style + __END__ =pod -=head1 NAME - -MooseX::ClassAttribute - Declare class attributes Moose-style - =head1 SYNOPSIS package My::Class; @@ -99,9 +93,10 @@ the constructor will not set that attribute. This class exports one function when you use it, C. This works exactly like Moose's C, but it declares class attributes. -One little nit is that if you include C in your class, you -won't remove the C function. To do that you must include -C as well. +One little nit is that if you include C in your class, you won't +remove the C function. To do that you must include C as well. Or you can just use L +instead. =head2 Implementation and Immutability @@ -112,10 +107,6 @@ provides introspection methods for class attributes. Class attributes themselves do the L role. -There is also a L -which provides part of the inlining implementation for class -attributes. - =head2 Cooperation with Metaclasses and Traits This module should work with most attribute metaclasses and traits, @@ -150,10 +141,6 @@ To donate, log into PayPal and send money to autarch@urth.org or use the button on this page: L -=head1 AUTHOR - -Dave Rolsky, C<< >> - =head1 BUGS Please report any bugs or feature requests to @@ -161,11 +148,4 @@ C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. -=head1 COPYRIGHT & LICENSE - -Copyright 2007-2008 Dave Rolsky, All Rights Reserved. - -This program is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - =cut