X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FGitalist.git;a=blobdiff_plain;f=local-lib5%2Flib%2Fperl5%2FMooseX%2FDeclare%2FSyntax%2FRoleApplication.pm;fp=local-lib5%2Flib%2Fperl5%2FMooseX%2FDeclare%2FSyntax%2FRoleApplication.pm;h=7cadc413b6d84ce4bb71cbbdc437d95b078122ac;hp=0000000000000000000000000000000000000000;hb=3fea05b9fbf95091f4522528b9980a33e0235603;hpb=af746827daa7a8feccee889e1d12ebc74cc9201e diff --git a/local-lib5/lib/perl5/MooseX/Declare/Syntax/RoleApplication.pm b/local-lib5/lib/perl5/MooseX/Declare/Syntax/RoleApplication.pm new file mode 100644 index 0000000..7cadc41 --- /dev/null +++ b/local-lib5/lib/perl5/MooseX/Declare/Syntax/RoleApplication.pm @@ -0,0 +1,77 @@ +package MooseX::Declare::Syntax::RoleApplication; + +use Moose::Role; + +use aliased 'MooseX::Declare::Context::Namespaced'; + +use namespace::clean -except => 'meta'; + +with qw( + MooseX::Declare::Syntax::OptionHandling +); + +around context_traits => sub { shift->(@_), Namespaced }; + +sub add_with_option_customizations { + my ($self, $ctx, $package, $roles) = @_; + + # consume roles + $ctx->add_early_cleanup_code_parts( + sprintf 'Moose::Util::apply_all_roles(%s->meta, %s)', + $package, + join ', ', + map { "q[$_]" } + map { $ctx->qualify_namespace($_) } + @{ $roles }, + ); + + return 1; +} + +1; + +=head1 NAME + +MooseX::Declare::Syntax::RoleApplication - Handle user specified roles + +=head1 DESCRIPTION + +This role extends L and provides +a C option. + +=head1 CONSUMES + +=over + +=item * L + +=back + +=head1 METHODS + +=head2 add_with_option_customizations + + Object->add_with_option_customizations ( + Object $context, + Str $package, + ArrayRef $roles, + HashRef $options + ) + +This will add a call to C in the scope code. + +=head1 SEE ALSO + +=over + +=item * L + +=item * L + +=back + +=head1 AUTHOR, COPYRIGHT & LICENSE + +See L + +=cut