Commit | Line | Data |
a1dd1788 |
1 | use MooseX::Declare; |
2 | |
3 | use Class::MOP; |
4 | use Class::Inspector; |
5 | |
9c11a562 |
6 | role CatalystX::Declare::Controller::QualifyClassNames { |
a1dd1788 |
7 | |
8 | use Carp qw( croak ); |
9 | |
10 | method _qualify_class_name (Str $type, Str $name) { |
11 | |
12 | my $app = ref($self->_application) || $self->_application; |
13 | |
14 | my @possibilities = ( |
15 | join('::', $app, $type, $name), |
16 | join('::', 'Catalyst', $type, $name), |
17 | $name, |
18 | ); |
19 | |
20 | for my $class (@possibilities) { |
21 | |
22 | return $class |
23 | if Class::MOP::is_class_loaded($class); |
24 | |
25 | return $class |
26 | if Class::Inspector->installed($class); |
27 | } |
28 | |
29 | croak sprintf q(Unable to locate %s %s named '%s', tried: %s), |
30 | ($type =~ /^[aeiuo]/i ? 'an' : 'a'), |
31 | $type, |
32 | $name, |
33 | join(', ', @possibilities), |
34 | ; |
35 | } |
36 | } |
0a99459e |
37 | |
38 | 1; |