adding the applied_traits method to attr
Stevan Little [Thu, 17 Apr 2008 20:13:29 +0000 (20:13 +0000)]
lib/Moose/Meta/Attribute.pm
lib/Moose/Util/TypeConstraints.pm
t/020_attributes/015_attribute_traits.t

index 6ec176d..28b2488 100644 (file)
@@ -46,6 +46,10 @@ __PACKAGE__->meta->add_attribute('documentation' => (
     reader    => 'documentation',
     predicate => 'has_documentation',
 ));
+__PACKAGE__->meta->add_attribute('traits' => (
+    reader    => 'applied_traits',
+    predicate => 'has_applied_traits',
+));
 
 # NOTE:
 # we need to have a ->does method in here to 
index 79ad4f9..bf13b12 100644 (file)
@@ -471,7 +471,7 @@ sub _install_type_coercions ($$) {
         my $given = shift;
         my @rv;
         while ( $given =~ m{ \G (?: $op_union )? ($type) }gcx ) {
-                push @rv => $1;
+            push @rv => $1;
         }
         (pos($given) eq length($given))
             || confess "'$given' didn't parse (parse-pos="
index 7eb265b..e83abc0 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 8;
+use Test::More tests => 9;
 use Test::Exception;
 use Test::Moose;
 
@@ -53,7 +53,9 @@ is($c->gorch, 10, '... got the right value for gorch');
 can_ok($c, 'baz');
 is($c->baz, 100, '... got the right value for baz');
 
-does_ok($c->meta->get_attribute('bar'), 'My::Attribute::Trait');
+my $bar_attr = $c->meta->get_attribute('bar');
+does_ok($bar_attr, 'My::Attribute::Trait');
+is_deeply($bar_attr->applied_traits, [qw/My::Attribute::Trait/], '... got the applied traits');
 
 ok(!$c->meta->get_attribute('gorch')->does('My::Attribute::Trait'), '... gorch doesnt do the trait');