3 class CatalystX::Declare::Keyword::Role
4 extends MooseX::Declare::Syntax::Keyword::Role {
7 use aliased 'MooseX::MethodAttributes::Role::Meta::Role';
8 use aliased 'MooseX::Role::Parameterized::Meta::Role::Parameterizable';
9 use aliased 'CatalystX::Declare::Keyword::Action', 'ActionKeyword';
12 around import_symbols_from (Object $ctx) {
14 $ctx->has_parameter_signature
16 : sprintf('Moose::Role -traits => q(MethodAttributes),')
19 before add_namespace_customizations (Object $ctx, Str $package) {
21 my $source = $self->import_symbols_from($ctx);
22 my @symbols = $self->imported_moose_symbols;
24 $ctx->add_preamble_code_parts(
29 after add_namespace_customizations (Object $ctx, Str $package) {
31 $ctx->add_preamble_code_parts(
33 'use %s -traits => q(%s), qw( has )',
34 'MooseX::Role::Parameterized',
35 'MooseX::MethodAttributes::Role::Meta::Role',
37 ) if $ctx->has_parameter_signature;
40 around default_inner (@args) {
43 @{ $self->$orig(@args) },
44 ActionKeyword->new(identifier => 'action'),
45 ActionKeyword->new(identifier => 'under'),
46 ActionKeyword->new(identifier => 'final'),
55 CatalystX::Declare::Keyword::Role - Declare Catalyst Controller Roles
59 use CatalystX::Declare;
61 controller_role MyApp::Web::ControllerRole::Foo {
63 method provided_method { ... }
65 action foo, under base, is final { ... }
67 around bar_action (Object $ctx) { ... }
72 This handler provides the C<controller_role> keyword. It is an extension of the
73 L<MooseX::Declare::Syntax::Keyword::Role> handler. Like with declared
74 controllers, the C<method> keyword and the modifiers are provided. For details
75 on the syntax for action declarations have a look at
76 L<CatalystX::Declare::Keyword::Action>, which also documents the effects of
77 method modifiers on actions.
83 =item L<MooseX::Declare::Syntax::Keyword::Role>
89 =head2 add_namespace_customizations
91 Object->add_namespace_customizations (Object $ctx, Str $package)
93 This hook is called by L<MooseX::Declare> and will set the package up as a role
94 and apply L<MooseX::MethodAttributes>.
98 ArrayRef[Object] Object->default_inner ()
100 Same as L<CatalystX::Declare::Keyword::Class/default_inner>.
106 =item L<CatalystX::Declare>
108 =item L<MooseX::Declare/role>
110 =item L<CatalystX::Declare::Keyword::Action>
112 =item L<CatalystX::Declare::Keyword::Controller>
118 See L<CatalystX::Declare/AUTHOR> for author information.
122 This program is free software; you can redistribute it and/or modify it under
123 the same terms as perl itself.