/usr/share/perl5/Text/MicroMason/ExecuteCache.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 | package Text::MicroMason::ExecuteCache;
use strict;
use Carp;
require Text::MicroMason::Base;
require Text::MicroMason::Cache::Simple;
######################################################################
# $code_ref = compile( text => $template );
sub compile {
my $self = shift;
my $code_ref = $self->NEXT('compile', @_);
my $cache = $self->_execute_cache()
or return $code_ref;
sub {
my $key = join("|", $code_ref, @_);
$cache->get( $key ) or $cache->set( $key, $code_ref->( @_ ) );
}
}
sub _execute_cache {
my $self = shift;
$self->{execute_cache} ||= Text::MicroMason::Cache::Simple->new();
}
######################################################################
1;
__END__
=head1 NAME
Text::MicroMason::ExecuteCache - Use a Cache for Template Results
=head1 SYNOPSIS
Instead of using this class directly, pass its name to be mixed in:
use Text::MicroMason;
my $mason = Text::MicroMason->new( -ExecuteCache );
Use the standard compile method to parse a template into a subroutine:
my $subref = $mason->compile( text=>$template );
print $subref->( 'name'=>'Dave' );
The template does not have to be interpreted the second time because
the results are cached:
print $subref->( 'name'=>'Dave' ); # fast second time
When run with different arguments, the template is re-interpreted
and the results stored:
print $subref->( 'name'=>'Bob' ); # first time for Bob
print $subref->( 'name'=>'Bob' ); # fast second time for Bob
=head1 DESCRIPTION
Caches the output of templates.
Note that you should not use this feature if your template code interacts with any external state, such as making changes to an external data source or obtaining values that will change in the future. (However, you can still use the caching provided by L<Text::MicroMason::CompileCache>.)
=head2 Public Methods
=over 4
=item compile()
Wraps each template that is compiled into a Perl subroutine in a memoizing closure.
=back
=head2 Supported Attributes
=over 4
=item execute_cache
Defaults to an instance of Text::MicroMason::Cache::Simple.
=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
|