/usr/share/perl5/MooseX/Declare/Syntax/InnerSyntaxHandling.pm is in libmoosex-declare-perl 0.43-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | package MooseX::Declare::Syntax::InnerSyntaxHandling;
# ABSTRACT: Keywords inside blocks
our $VERSION = '0.43';
use Moose::Role;
use MooseX::Declare::Util qw( outer_stack_push );
use namespace::autoclean;
#pod =head1 DESCRIPTION
#pod
#pod This role allows you to setup keyword handlers that are only available
#pod inside blocks or other scoping environments.
#pod
#pod =head1 REQUIRED METHODS
#pod
#pod =head2 get_identifier
#pod
#pod Str get_identifier ()
#pod
#pod Required to return the name of the identifier of the current handler.
#pod
#pod =cut
requires qw(
get_identifier
);
#pod =method default_inner
#pod
#pod ArrayRef[Object] Object->default_inner ()
#pod
#pod Returns an empty C<ArrayRef> by default. If you want to setup additional
#pod keywords you will have to C<around> this method.
#pod
#pod =cut
sub default_inner { [] }
#pod =head1 MODIFIED METHODS
#pod
#pod =head2 setup_for
#pod
#pod Object->setup_for(ClassName $class, %args)
#pod
#pod After the keyword is setup inside itself, this will call L</setup_inner_for>.
#pod
#pod =cut
after setup_for => sub {
my ($self, $setup_class, %args) = @_;
# make sure stack is valid
my $stack = $args{stack} || [];
# setup inner keywords if we're inside ourself
if (grep { $_ eq $self->get_identifier } @$stack) {
$self->setup_inner_for($setup_class, %args);
}
};
#pod =method setup_inner_for
#pod
#pod Object->setup_inner_for(ClassName $class, %args)
#pod
#pod Sets up all handlers in the inner class.
#pod
#pod =cut
sub setup_inner_for {
my ($self, $setup_class, %args) = @_;
# setup each keyword in target class
for my $inner (@{ $self->default_inner($args{stack}) }) {
$inner->setup_for($setup_class, %args);
}
# push package onto stack for namespace management
if (exists $args{file}) {
outer_stack_push $args{file}, $args{outer_package};
}
}
#pod =head1 SEE ALSO
#pod
#pod =for :list
#pod * L<MooseX::Declare>
#pod * L<MooseX::Declare::Syntax::NamespaceHandling>
#pod * L<MooseX::Declare::Syntax::MooseSetup>
#pod
#pod =cut
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
MooseX::Declare::Syntax::InnerSyntaxHandling - Keywords inside blocks
=head1 VERSION
version 0.43
=head1 DESCRIPTION
This role allows you to setup keyword handlers that are only available
inside blocks or other scoping environments.
=head1 METHODS
=head2 default_inner
ArrayRef[Object] Object->default_inner ()
Returns an empty C<ArrayRef> by default. If you want to setup additional
keywords you will have to C<around> this method.
=head2 setup_inner_for
Object->setup_inner_for(ClassName $class, %args)
Sets up all handlers in the inner class.
=head1 REQUIRED METHODS
=head2 get_identifier
Str get_identifier ()
Required to return the name of the identifier of the current handler.
=head1 MODIFIED METHODS
=head2 setup_for
Object->setup_for(ClassName $class, %args)
After the keyword is setup inside itself, this will call L</setup_inner_for>.
=head1 SEE ALSO
=over 4
=item *
L<MooseX::Declare>
=item *
L<MooseX::Declare::Syntax::NamespaceHandling>
=item *
L<MooseX::Declare::Syntax::MooseSetup>
=back
=head1 AUTHOR
Florian Ragwitz <rafl@debian.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2008 by Florian Ragwitz.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut
|