allow under specification inside action syntax via <-
[catagits/CatalystX-Declare.git] / lib / CatalystX / Declarative / Keyword / Controller.pm
1 use MooseX::Declare;
2
3 class CatalystX::Declarative::Keyword::Controller 
4     extends MooseX::Declare::Syntax::Keyword::Class
5     with    CatalystX::Declarative::DefaultSuperclassing {
6
7
8     use MooseX::MethodAttributes ();
9     use aliased 'CatalystX::Declarative::Keyword::Action', 'ActionKeyword';
10     use aliased 'CatalystX::Declarative::Controller::RegisterActionRoles';
11     use aliased 'CatalystX::Declarative::Controller::DetermineActionClass';
12
13
14     before add_namespace_customizations (Object $ctx, Str $package) {
15
16         MooseX::MethodAttributes->init_meta(for_class => $package);
17         $ctx->add_preamble_code_parts(
18             'use CLASS',
19             sprintf('with qw( %s )', join ' ',
20                 RegisterActionRoles,
21                 DetermineActionClass,
22             ),
23         );
24     }
25
26     method default_superclasses { 'Catalyst::Controller' }
27
28     around default_inner () {
29
30         return [ 
31             @{ $self->$orig() || [] },
32             ActionKeyword->new(identifier => 'action'),
33             ActionKeyword->new(identifier => 'under'),
34             ActionKeyword->new(identifier => 'final'),
35         ];
36     }
37 }
38