X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FClassAttribute.pm;h=4666903d26935db56a7e2427d5a8670f103e0306;hb=cd8784bb787360b59a0df1d8513633ce2bd593f4;hp=a142d0bbbb399688eae1eac3881c8eae5e830b35;hpb=da6af1a7d92b2207c5631d4dd8bf48e13bd806d4;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/lib/MooseX/ClassAttribute.pm b/lib/MooseX/ClassAttribute.pm index a142d0b..4666903 100644 --- a/lib/MooseX/ClassAttribute.pm +++ b/lib/MooseX/ClassAttribute.pm @@ -3,8 +3,14 @@ package MooseX::ClassAttribute; use strict; use warnings; -use Moose 0.98 (); +# This module doesn't really need these pragmas - this is just for the benefit +# of prereq scanning. +require namespace::clean 0.20; +require 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,