X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FClassAttribute.pm;h=bbc58aea24f6720eba2ca7ed4ae39b82c5d2261d;hb=3d3d1cd7318e9f0ab7dd183ca6a6ac10a85d1756;hp=404b809c3134139d141aa6437108bd628e7b2c3f;hpb=935982fc4f73317bea99646f46a22408111dd6ad;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/lib/MooseX/ClassAttribute.pm b/lib/MooseX/ClassAttribute.pm index 404b809..bbc58ae 100644 --- a/lib/MooseX/ClassAttribute.pm +++ b/lib/MooseX/ClassAttribute.pm @@ -3,8 +3,14 @@ package MooseX::ClassAttribute; use strict; use warnings; -use Moose 1.09 (); +# This module doesn't really need these pragmas - this is just for the benefit +# of prereq scanning. +use namespace::clean 0.20 (); +use namespace::autoclean 0.11 (); + +use Moose 2.00 (); use Moose::Exporter; +use Moose::Util; use MooseX::ClassAttribute::Trait::Class; use MooseX::ClassAttribute::Trait::Role; use MooseX::ClassAttribute::Trait::Application::ToClass; @@ -25,15 +31,24 @@ Moose::Exporter->setup_import_methods( ); sub class_has { - my $meta = shift; - my $name = shift; - my %options = @_; + my $meta = shift; + my $name = shift; 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 @@ -97,10 +112,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,