Check body, because original_package_name may be a different role
[gitmo/Perl-Critic-Dynamic-Moose.git] / lib / Perl / Critic / Utils / Moose.pm
1 package Perl::Critic::Utils::Moose;
2 use strict;
3 use warnings;
4 use Sub::Exporter -setup => {
5     exports => ['meta_type'],
6 };
7
8 my @types = (
9     [ 'Moose::Meta::Role'              => 'role'            ],
10     [ 'Moose::Meta::TypeCoercion'      => 'type coercion'   ],
11     [ 'Moose::Meta::TypeConstraint'    => 'type constraint' ],
12     [ 'Moose::Meta::Role::Application' => 'role application' ],
13
14     [ 'Class::MOP::Method'             => 'method'          ],
15     [ 'Class::MOP::Attribute'          => 'attribute'       ],
16     [ 'Class::MOP::Class'              => 'class'           ],
17     [ 'Class::MOP::Module'             => 'module'          ],
18     [ 'Class::MOP::Package'            => 'package'         ],
19 );
20
21 sub meta_type {
22     my $meta = shift;
23
24     for (@types) {
25         my ($class, $name) = @$_;
26         return $name if $meta->isa($class);
27     }
28
29     return undef;
30 }
31
32 1;
33