X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FClassAttribute.pm;h=d3a3e63224f08545f98b15dafdae5af9afbf61f5;hb=3e505970e29109d4eef1f58f6e0275dbe10e6c64;hp=a142d0bbbb399688eae1eac3881c8eae5e830b35;hpb=da6af1a7d92b2207c5631d4dd8bf48e13bd806d4;p=gitmo%2FMooseX-ClassAttribute.git diff --git a/lib/MooseX/ClassAttribute.pm b/lib/MooseX/ClassAttribute.pm index a142d0b..d3a3e63 100644 --- a/lib/MooseX/ClassAttribute.pm +++ b/lib/MooseX/ClassAttribute.pm @@ -3,8 +3,9 @@ package MooseX::ClassAttribute; use strict; use warnings; -use Moose 0.98 (); +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; @@ -27,13 +28,22 @@ Moose::Exporter->setup_import_methods( 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 @@ -97,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,