This file is indexed.

/usr/share/perl5/Text/MicroMason/PostProcess.pm is in libtext-micromason-perl 2.21-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
package Text::MicroMason::PostProcess;

use strict;
use Carp;

######################################################################

sub assembler_rules {
  my $self = shift;
  my %rules = $self->NEXT('assembler_rules', @_);
  $rules{return_output} = "\$m->post_process( $rules{return_output} )";
  %rules;
}

sub post_processors {
  my $self = shift;
  my $funcs = $self->{post_process};
  my @funcs = ref($funcs) eq 'ARRAY' ? @$funcs : $funcs ? $funcs : ();
  if ( scalar @_ ) {
    @funcs = ( $#_ == 0 and ref($_[0]) eq 'ARRAY' ) ? @{ $_[0] } : (@funcs, @_);
    $self->{post_process} = [ @funcs ];
  }
  return @funcs;
}

sub post_process {
  my $self = shift;
  local $_ = shift;
  foreach my $func ( $self->post_processors ) {
    my $p = prototype($func);
    if ( defined $p and ! length $p ) {
      &$func;
    } else {
      $_ = &$func( $_ );
    }
  }
  $_;
}

######################################################################

1;

__END__

=head1 NAME

Text::MicroMason::PostProcess - Apply Filters to All Template Output


=head1 SYNOPSIS

Instead of using this class directly, pass its name to be mixed in:

    use Text::MicroMason;
    my $mason = Text::MicroMason->new( -PostProcess );

Use the standard compile and execute methods to parse and evaluate templates:

  print $mason->compile( text=>$template )->( @%args );
  print $mason->execute( text=>$template, @args );

You can define output filters at creation or subsequently:

    $mason = Text::MicroMason->new( -PostProcess, post_process => $func );

    $mason->post_processors( $func );

    $mason->compile( text => $template, post_process => $func );

    $mason->execute( text => $template, { post_process => $func }, @args );


=head1 DESCRIPTION

This mixin class adds filtering of all template output to any MicroMason class.

Filter functions can accept the string to be output and return a filtered version:

  $mason->post_process( sub {
    my $foo = shift;
    $foo =~ s/a-Z/A-Z/;
    return $foo;
  } );

If a filter function has an empty prototype, it's assumed to work on $_:

  $mason->post_process( sub () {
    s/a-Z/A-Z/
  } );

=head2 Public Methods

=over 4

=item post_processors()

Gets and sets the functions to be used for output filtering.

Called with no arguments, returns the list of filter functions:

  my @functions = $mason->post_processors();

Called with one array-ref argument, sets the list of filter functions:

  $mason->post_processors( \@functions );

Called with one or more function-ref arguments, appends to the list:

  $mason->post_processors( $filter1, $filter2 );

=back

=head2 Supported Attributes

=over 4

=item post_process

Stores a reference to a function or an array of functions to be used:

  $mason->{post_process} = $function;
  $mason->{post_process} = [ $function1, $function2 ];

You can set this attribute when you create your mason object, or in calls to the compile and execute methods. 

=back

=head2 Private Methods

=over 4

=item post_process()

  $mason->post_process( $output ) : $filtered_output

Applies the post-processing filter.

=back


=head1 SEE ALSO

For an overview of this templating framework, see L<Text::MicroMason>.

This is a mixin class intended for use with L<Text::MicroMason::Base>.

For distribution, installation, support, copyright and license 
information, see L<Text::MicroMason::Docs::ReadMe>.

=cut