This file is indexed.

/usr/share/perl5/Text/MicroMason/AllowGlobals.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
package Text::MicroMason::AllowGlobals;

use strict;
use Carp;

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

sub allow_globals {
  my $self = shift;
  my $globals = $self->{allow_globals};
  my @current = ref( $globals ) ? @$globals :
  		! defined( $globals ) ? () : 
		split ' ' , $globals;
  
  if ( scalar @_ ) {
    my %once_each;
    @current = grep { ! ( $once_each{$_} ++ ) } @current, @_;
    $self->{allow_globals} = \@current;
  }
  
  wantarray ? @current : join(' ', @current);
}

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

sub set_globals {
  my ( $self, %globals ) = @_;
  
  my @globals = keys %globals;
  $self->allow_globals( @globals );
  
  my $sub = join( "\n", 
      $self->allow_globals_statement(),
      " sub { ",
	map( { 
	    my $var = $_;  $var =~ s/^[\@\%]/*/; $var =~ s/^(\w)/\$$1/; 
	    "$var = \$_[0]{'$_'};" 
	  } @globals ),
      " }"
  );
  
  $self->eval_sub( $sub )->( \%globals )
}

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

sub allow_globals_statement {
  my $self = shift;
  "use vars qw(" . $self->allow_globals() . ");"
}

sub assemble {
  my $self = shift;
  $self->NEXT('assemble', once => $self->allow_globals_statement(), @_);
}

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

1;

__END__

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

=head1 NAME

Text::MicroMason::AllowGlobals - Share package vars between templates


=head1 SYNOPSIS

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

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

Share package variables:

    $mason->set_globals( '$name' => 'Bob' );

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

  print $mason->compile( text=>$template )->();
  print $mason->execute( text=>$template );

Then, in a template, you can refer to those globals:

    Welcome, <% $name %>! 


=head1 DESCRIPTION


=head2 Public Methods

=over 4 

=item set_globals()

Accepts a list of pairs of global variable names and corresponding values.

Adds each variable name to the allowed list and sets it to the initial value.

=item allow_globals()

Gets or sets the variables names to be allowed.

If called with arguments, adds them to the list.

Returns the variables to be allowed as a list, or as a space-separated string in scalar context.

=back

=head2 Supported Attributes

=over 4

=item allow_globals

Optional array or space-separated string of global variable names to be allowed.

=back

=head2 Private Methods

=over 4

=item assemble()

Adds the allow_globals_statement to each token stream before assembling it.

=item allow_globals_statement()

This method prepends the "use vars" statement needed for the template subroutines to compile.

=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::HTMLMason>.

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

=cut