/usr/share/perl5/Text/MicroMason/ApacheHandler.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 | package Text::MicroMason::ApacheHandler;
use Apache::Constants;
use Apache::Request;
use Text::MicroMason::Base;
######################################################################
my %configs;
sub handler ($$) {
my ($package, $r) = @_;
my $apache = Apache::Request->instance( $r );
my $file = $apache->filename;
# $apache->document_root;
my $syntax = $apache->dir_config('MicroMasonSyntax') || 'HTMLMason';
my @mixins = $apache->dir_config->get('MicroMasonMixins');
my @attrs = $apache->dir_config->get('MicroMasonAttribs');
my %seen;
unshift @attrs, ( map "-$_", grep { ! $seen{$_} ++ } ( @mixins, $syntax ) );
my $config = join ' ', @attrs;
my $mason = ( $configs{$config} ||= Text::MicroMason::Base->new( @attrs ) );
my $template = $mason->compile( file => $file );
$apache->content_type( 'text/html' );
# $apache->header_out();
local $Text::MicroMason::Commands::r = $apache;
print $template->( $apache->param() );
return Apache::Constants::OK();
}
sub configure {
my $apache = Apache::Request->instance( shift );
my $file = $apache->filename;
# $apache->document_root;
my $syntax = $apache->dir_config('MicroMasonSyntax') || 'HTMLMason';
my @mixins = $apache->dir_config->get('MicroMasonMixins');
my @attrs = $apache->dir_config->get('MicroMasonAttribs');
my %seen;
unshift @attrs, ( map "-$_", grep { ! $seen{$_} ++ } ( @mixins, $syntax ) );
my $config = join ' ', @attrs;
my $mason = ( $configs{$config} ||= Text::MicroMason::Base->new( @attrs ) );
}
######################################################################
sub translate_params {
MasonAllowGlobals => [ -AllowGlobals, allow_globals => \$1 ],
MasonCompRoot => [ -TemplateDir, template_root => \$1 ],
}
######################################################################
1;
__END__
######################################################################
=head1 NAME
Text::MicroMason::ApacheHandler - Use MicroMason from mod_perl
=head1 SYNOPSIS
In your httpd.conf or equivalent Apache configuration file:
PerlModule Text::MicroMason::ApacheHandler
<Files *.mm>
SetHandler perl-script
PerlHandler Text::MicroMason::ApacheHandler
</Files>
In your document root or other web-accessible directory:
<% my $visitor = $r->connection->remote_host(); %>
<html>
Hello there <%= $visitor %>!
The time is now <%= localtime() %>.
</html>
=head1 DESCRIPTION
B<Caution:> This module is new, experimental, and incomplete. Not intended for production use. Interface subject to change. If you're interested in this capability, your feedback would be appreciated.
=head2 Configuration
The following configuration parameters are supported:
=over 4
=item MicroMasonSyntax
PerlSetVar MicroMasonSyntax HTMLMason
Name of the syntax class that will compile the templates. Defaults to HTMLMason.
=item MicroMasonMixins
PerlAddVar MicroMasonMixins Safe
PerlAddVar MicroMasonMixins CatchErrors
List of additional mixin classes to be enabled.
=item MicroMasonAttribs
PerlAddVar MicroMasonAttribs "-AllowGlobals, allow_globals => '$r'"
Allows for any set of attributes to be defined. Mixin names prefaced with a dash can also be included.
=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
|