File Coverage

blib/lib/KelpX/Controller/Context.pm
Criterion Covered Total %
statement 16 16 100.0
branch 2 2 100.0
condition n/a
subroutine 5 5 100.0
pod 2 3 66.6
total 25 26 96.1


line stmt bran cond sub pod time code
1             package KelpX::Controller::Context;
2             $KelpX::Controller::Context::VERSION = '2.00';
3 1     1   370876 use Kelp::Base 'Kelp::Context';
  1         1  
  1         6  
4 1     1   2283 use Module::Loader;
  1         11446  
  1         173  
5              
6             attr persistent_controllers => !!1;
7              
8             sub build_controller
9             {
10 2     2 1 658 my ($self, $class) = @_;
11 2         10 return $class->new(context => $self);
12             }
13              
14             sub build_controllers
15             {
16 1     1 0 20 my ($self) = @_;
17              
18 1         38 my $base = $self->controller;
19 1         10 my @subcontrollers = Module::Loader->new->find_modules(ref $base);
20              
21 1         1119 foreach my $controller (@subcontrollers) {
22 1         5 $self->controller("+$controller");
23             }
24             }
25              
26             sub set_controller
27             {
28 6     6 1 152253 my ($self, $class) = @_;
29              
30             # normally, if there is no controller, an app will be used as current
31             # context. Use base controller instead.
32 6 100       24 return $self->current($self->controller)
33             unless $class;
34              
35 5         19 return $self->SUPER::set_controller($class);
36             }
37              
38             1;
39