File Coverage

blib/lib/MooseX/Declare/Syntax/RoleApplication.pm
Criterion Covered Total %
statement 15 15 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod 1 1 100.0
total 20 20 100.0


line stmt bran cond sub pod time code
1             package MooseX::Declare::Syntax::RoleApplication;
2             # ABSTRACT: Handle user specified roles
3              
4             our $VERSION = '0.43';
5              
6 24     24   13862 use Moose::Role;
  24         41  
  24         369  
7 24     24   86771 use aliased 'MooseX::Declare::Context::Namespaced';
  24         39  
  24         171  
8 24     24   3358 use namespace::autoclean;
  24         33  
  24         190  
9              
10             #pod =head1 DESCRIPTION
11             #pod
12             #pod This role extends L<MooseX::Declare::Syntax::OptionHandling> and provides
13             #pod a C<with|/add_with_option_customizations> option.
14             #pod
15             #pod =head1 CONSUMES
16             #pod
17             #pod =for :list
18             #pod * L<MooseX::Declare::Syntax::OptionHandling>
19             #pod
20             #pod =cut
21              
22             with qw(
23             MooseX::Declare::Syntax::OptionHandling
24             );
25              
26             around context_traits => sub { shift->(@_), Namespaced };
27              
28             #pod =method add_with_option_customizations
29             #pod
30             #pod Object->add_with_option_customizations (
31             #pod Object $context,
32             #pod Str $package,
33             #pod ArrayRef $roles,
34             #pod HashRef $options
35             #pod )
36             #pod
37             #pod This will add a call to C<with> in the scope code.
38             #pod
39             #pod =cut
40              
41             sub add_with_option_customizations {
42 10     10 1 20 my ($self, $ctx, $package, $roles) = @_;
43              
44             # consume roles
45             $ctx->add_early_cleanup_code_parts(
46             sprintf 'Moose::Util::apply_all_roles(%s->meta, %s)',
47             $package,
48             join ', ',
49 14         530 map { "q[$_]" }
50 14         52 map { $ctx->qualify_namespace($_) }
51 10         25 @{ $roles },
  10         23  
52             );
53              
54 10         36 return 1;
55             }
56              
57             #pod =head1 SEE ALSO
58             #pod
59             #pod =for :list
60             #pod * L<MooseX::Declare>
61             #pod * L<MooseX::Declare::Syntax::OptionHandling>
62             #pod
63             #pod =cut
64              
65             1;
66              
67             __END__
68              
69             =pod
70              
71             =encoding UTF-8
72              
73             =head1 NAME
74              
75             MooseX::Declare::Syntax::RoleApplication - Handle user specified roles
76              
77             =head1 VERSION
78              
79             version 0.43
80              
81             =head1 DESCRIPTION
82              
83             This role extends L<MooseX::Declare::Syntax::OptionHandling> and provides
84             a C<with|/add_with_option_customizations> option.
85              
86             =head1 METHODS
87              
88             =head2 add_with_option_customizations
89              
90             Object->add_with_option_customizations (
91             Object $context,
92             Str $package,
93             ArrayRef $roles,
94             HashRef $options
95             )
96              
97             This will add a call to C<with> in the scope code.
98              
99             =head1 CONSUMES
100              
101             =over 4
102              
103             =item *
104              
105             L<MooseX::Declare::Syntax::OptionHandling>
106              
107             =back
108              
109             =head1 SEE ALSO
110              
111             =over 4
112              
113             =item *
114              
115             L<MooseX::Declare>
116              
117             =item *
118              
119             L<MooseX::Declare::Syntax::OptionHandling>
120              
121             =back
122              
123             =head1 AUTHOR
124              
125             Florian Ragwitz <rafl@debian.org>
126              
127             =head1 COPYRIGHT AND LICENSE
128              
129             This software is copyright (c) 2008 by Florian Ragwitz.
130              
131             This is free software; you can redistribute it and/or modify it under
132             the same terms as the Perl 5 programming language system itself.
133              
134             =cut