moved to CatalystX::Declare
[catagits/CatalystX-Declare.git] / lib / CatalystX / Declare / Controller / QualifyClassNames.pm
CommitLineData
a1dd1788 1use MooseX::Declare;
2
3use Class::MOP;
4use Class::Inspector;
5
9c11a562 6role 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}