NAME¶
Text::MicroMason::TemplateDir - Use Base Directory and Relative Paths
SYNOPSIS¶
Instead of using this class directly, pass its name to be mixed in:
use Text::MicroMason;
my $mason = Text::MicroMason->new( -TemplateDir, template_root=>'/foo' );
Use the standard compile and execute methods to parse and evalute templates:
print $mason->compile( file=>$filepath )->( 'name'=>'Dave' );
print $mason->execute( file=>$filepath, 'name'=>'Dave' );
Templates stored in files are looked up relative to the template root:
print $mason->execute( file=>"includes/greeting.msn", 'name'=>'Charles');
When including other files into a template you can use relative paths:
<& ../includes/greeting.msn, name => 'Alice' &>
DESCRIPTION¶
This module changes the resolution of files passed to
compile() and
execute() to be relative to a base directory path or to the currently
executing template.
Supported Attributes¶
- template_root
- Base directory from which to find templates.
- strict_root
- Optional directory beyond which not to read files. If set to 1, uses
template_root, Causes read_file to croak if any filename outside of the
root is provided. (Note that this is not a chroot jail and only affects
attempts to load a file as a template; for greater security see the
chroot() builtin and Text::MicroMason::Safe.)
Private Methods¶
- prepare
- Intercepts uses of file templates and applies the base-path
adjustment.
- read_file
- Intercepts file access to check for strict_root.
EXCEPTIONS¶
The following additional exceptions are generated by
Text::MicroMason::TemplateDir when appropriate:
- •
- Text::MicroMason::TemplateDir: Strict root '%s' doesn't seem to exist
The strict_root directory (or template_root if strict_root is '1') doesn't
seem to exist. Strict root checking uses Cwd's abs_path(), and
requires the strict_root directory to exist at the time the check is
performed.
- •
- Text::MicroMason::TemplatePath: Template '%s' not in required base path
'%s'
The template found in the configured template path was not within the
configured strict_root directory. This may be caused by requesting an
absolute template filename not within strict_root, or by specifying a
strict_root which does not match the configured template path.
SEE ALSO¶
For an overview of this templating framework, see Text::MicroMason.
This is a mixin class intended for use with Text::MicroMason::Base.
For distribution, installation, support, copyright and license information, see
Text::MicroMason::Docs::ReadMe.