4 package MooseX::MethodAttributes::Role;
7 # ABSTRACT: code attribute introspection
11 use Moose::Util::MetaRole;
12 use Moose::Util qw/find_meta does_role ensure_all_roles/;
13 # Ensure trait is registered
14 use MooseX::MethodAttributes::Role::Meta::Role ();
17 Moose::Exporter->setup_import_methods( also => 'Moose::Role' );
20 my ($class, %options) = @_;
22 my $for_class = $options{for_class};
23 my $meta = find_meta($for_class);
26 && does_role($meta, 'MooseX::MethodAttributes::Role::Meta::Role');
28 $meta = Moose::Meta::Role->initialize( $for_class )
31 $meta = Moose::Util::MetaRole::apply_metaclass_roles(
32 for_class => $meta->name,
33 metaclass_roles => [ 'MooseX::MethodAttributes::Role::Meta::Role' ],
36 ensure_all_roles($meta->name,
37 'MooseX::MethodAttributes::Role::AttrContainer',
51 MooseX::MethodAttributes::Role - code attribute introspection
60 use MooseX::MethodAttributes::Role;
62 sub foo : Bar Baz('corge') { ... }
64 my $attrs = MyRole->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]
68 This module allows you to write a Moose Role with code attributes of methods to
69 be introspected using Moose meta method objects.
81 Florian Ragwitz <rafl@debian.org>
82 Tomas Doran <bobtfish@bobtfish.net>
84 =head1 COPYRIGHT AND LICENSE
86 This software is copyright (c) 2009 by Florian Ragwitz.
88 This is free software; you can redistribute it and/or modify it under
89 the same terms as perl itself.