use Template::Filters; $filters = Template::Filters->new(\%config); ($filter, $error) = $filters->fetch($name, \@args, $context); if ($filter) { print &$filter("some text"); } else { print "Could not fetch $name filter: $error\n"; }
The Template::Filters
module implements a provider for
creating subroutines that implement the standard filters. Additional
custom filters may be provided via the FILTERS configuration option.
Constructor method which instantiates and returns a reference to a
Template::Filters
object. A reference to a hash array of
configuration items may be passed as a parameter. These are described
below.
my $filters = Template::Filters->new({ FILTERS => { ... }, }); my $template = Template->new({ LOAD_FILTERS => [ $filters ], });
A default Template::Filters
module is created by the Template module if the LOAD_FILTERS option isn't specified. All
configuration parameters are forwarded to the constructor.
$template = Template->new({ FILTERS => { ... }, });
Called to request that a filter of a given name be provided. The name of the filter should be specified as the first parameter. This should be one of the standard filters or one specified in the FILTERS configuration hash. The second argument should be a reference to an array containing configuration parameters for the filter. This may be specified as 0, or undef where no parameters are provided. The third argument should be a reference to the current Template::Context object.
The method returns a reference to a filter sub-routine on success. It may
also return (undef, STATUS_DECLINE)
to decline the request,
to allow delegation onto other filter providers in the LOAD_FILTERS chain of responsibility. On
error, ($error, STATUS_ERROR)
is returned where $error is an
error message or Template::Exception object indicating the error that occurred.
When the TOLERANT
option is set, errors are automatically
downgraded to a STATUS_DECLINE
response.
This class method can be called to configure the html_entity
filter to use the HTML::Entities module. An error will be raised if it is not
installed on your system.
use Template::Filters; Template::Filters->use_html_entities();
This class method can be called to configure the html_entity
filter to use the Apache::Util module. An error will be raised if it is not
installed on your system.
use Template::Filters; Template::Filters->use_apache_util();
This class method can be called to configure the uri
and
url
filters to use the older RFC2732 standard for matching
unsafe characters.
The following list summarises the configuration options that can be
provided to the Template::Filters
new() constructor. Please see Template::Manual::Config
for further information about each option.
The FILTERS option can be used to specify custom filters which can then be used with the FILTER directive like any other. These are added to the standard filters which are available by default.
$filters = Template::Filters->new({ FILTERS => { 'sfilt1' => \&static_filter, 'dfilt1' => [ \&dyanamic_filter_factory, 1 ], }, });
The TOLERANT flag can be set to indicate that the
Template::Filters
module should ignore any errors and
instead return STATUS_DECLINED
.
Please see Template::Manual::Filters for a list of the filters provided with the Template Toolkit, complete with examples of use.
Andy Wardley <abw@wardley.org> http://wardley.org/
Copyright (C) 1996-2020 Andy Wardley. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.