This file is indexed.

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

use strict;
use Carp;

require Text::MicroMason::Cache::Simple;
require Text::MicroMason::Cache::File;

######################################################################
# What cache class should we use for each src_type?

my %CACHE_CLASS = (
                   file => 'Text::MicroMason::Cache::File',
                   text => 'Text::MicroMason::Cache::Simple',
                  );

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

# $code_ref = compile( file => $filename );
sub compile {
    my $self = shift;
    my ( $src_type, $src_data, %options ) = @_;
    my $cache = $self->_compile_cache( $src_type )
        or return $self->NEXT('compile', @_);
    my $key = $self->cache_key(@_);
    $cache->get( $key ) or $cache->set( $key,
                                        $self->NEXT('compile', @_),
                                      );
}

sub _compile_cache {
    my ($self, $type) = @_;
    $CACHE_CLASS{$type} or return;
    
    $self->{compile_cache}{$type} ||= $CACHE_CLASS{$type}->new();
}

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


1;

__END__

=head1 NAME

Text::MicroMason::CompileCache - Use a Cache for Template Compilation


=head1 SYNOPSIS

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

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

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

    print $mason->execute( text=>$template, 'name'=>'Dave' );

The template does not have to be parsed the second time because it's cached:

    print $mason->execute( text=>$template, 'name'=>'Bob' );

Templates stored in files are also cached, until the file changes:

    print $mason->execute( file=>"./greeting.msn", 'name'=>'Charles');


=head1 DESCRIPTION


=head2 Public Methods

=over 4

=item compile()

Caching wrapper around normal compile() behavior.

=back

=head2 Supported Attributes

=over 4

=item compile_cache_text

Defaults to an instance of Text::MicroMason::Cache::Simple. You may pass in your own cache object.

=item compile_cache_file

Defaults to an instance of Text::MicroMason::Cache::File. You may pass in your own cache object.

=back

This module uses a simple cache interface that is widely supported: the
only methods required are C<get($key)> and C<set($key, $value)>. You can
use the simple cache classes provided in the Text::MicroMason::Cache::
namespace, or select other caching modules on CPAN that support the
interface described in L<Cache::Cache>.


=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