fixed broken renderview testcase
[catagits/CatalystX-Declare.git] / lib / CatalystX / Declare / Keyword / Role.pm
CommitLineData
856ac9a7 1use MooseX::Declare;
2
3class CatalystX::Declare::Keyword::Role
4 extends MooseX::Declare::Syntax::Keyword::Role {
5
6
7 use aliased 'MooseX::MethodAttributes::Role::Meta::Role';
c2a8165b 8 use aliased 'MooseX::Role::Parameterized::Meta::Role::Parameterizable';
9 use aliased 'CatalystX::Declare::Keyword::Action', 'ActionKeyword';
856ac9a7 10
11
c2a8165b 12 around import_symbols_from (Object $ctx) {
13
14 $ctx->has_parameter_signature
15 ? $self->$orig($ctx)
16 : sprintf('Moose::Role -traits => q(MethodAttributes),')
17 }
18
856ac9a7 19 before add_namespace_customizations (Object $ctx, Str $package) {
20
c2a8165b 21 my $source = $self->import_symbols_from($ctx);
22 my @symbols = $self->imported_moose_symbols;
23
856ac9a7 24 $ctx->add_preamble_code_parts(
25 'use CLASS',
856ac9a7 26 );
27 }
28
c2a8165b 29 after add_namespace_customizations (Object $ctx, Str $package) {
30
31 $ctx->add_preamble_code_parts(
32 sprintf(
33 'use %s -traits => q(%s), qw( has )',
34 'MooseX::Role::Parameterized',
35 'MooseX::MethodAttributes::Role::Meta::Role',
36 ),
37 ) if $ctx->has_parameter_signature;
38 }
856ac9a7 39
c2a8165b 40 around default_inner (@args) {
856ac9a7 41
42 return [
c2a8165b 43 @{ $self->$orig(@args) },
856ac9a7 44 ActionKeyword->new(identifier => 'action'),
45 ActionKeyword->new(identifier => 'under'),
46 ActionKeyword->new(identifier => 'final'),
47 ];
48 }
49}
50
51__END__
52
53=head1 NAME
54
55CatalystX::Declare::Keyword::Role - Declare Catalyst Controller Roles
56
57=head1 SYNOPSIS
58
59 use CatalystX::Declare;
60
205323ac 61 controller_role MyApp::Web::ControllerRole::Foo {
856ac9a7 62
63 method provided_method { ... }
64
65 action foo, under base, is final { ... }
66
67 around bar_action (Object $ctx) { ... }
68 }
69
70=head1 DESCRIPTION
71
205323ac 72This handler provides the C<controller_role> keyword. It is an extension of the
856ac9a7 73L<MooseX::Declare::Syntax::Keyword::Role> handler. Like with declared
74controllers, the C<method> keyword and the modifiers are provided. For details
75on the syntax for action declarations have a look at
76L<CatalystX::Declare::Keyword::Action>, which also documents the effects of
77method modifiers on actions.
78
79=head1 SUPERCLASSES
80
81=over
82
83=item L<MooseX::Declare::Syntax::Keyword::Role>
84
85=back
86
87=head1 METHODS
88
89=head2 add_namespace_customizations
90
91 Object->add_namespace_customizations (Object $ctx, Str $package)
92
93This hook is called by L<MooseX::Declare> and will set the package up as a role
94and apply L<MooseX::MethodAttributes>.
95
96=head2 default_inner
97
98 ArrayRef[Object] Object->default_inner ()
99
100Same as L<CatalystX::Declare::Keyword::Class/default_inner>.
101
102=head1 SEE ALSO
103
104=over
105
106=item L<CatalystX::Declare>
107
108=item L<MooseX::Declare/role>
109
110=item L<CatalystX::Declare::Keyword::Action>
111
112=item L<CatalystX::Declare::Keyword::Controller>
113
114=back
115
116=head1 AUTHOR
117
118See L<CatalystX::Declare/AUTHOR> for author information.
119
120=head1 LICENSE
121
122This program is free software; you can redistribute it and/or modify it under
123the same terms as perl itself.
124
125=cut