Custom Scanner Tagset
use Template::TT3::Scanner; my $scanner = Template::TT3::Scanner->new( tagset => { bold => { type => 'replace', start => '[b]', end => '[/b]', replace => sub { my ($self, $text) = @_; return "<b>$text</b>"; } }, italic => { # ... }, # ... } );
Thus Spake Andy:
We can use the Template::TT3::Scanner
module. Instead of using the
default TT3 tagset (i.e. the inline
, outline
, comment
and control
tags)
we tell it to use our own custom tagset. Here we define a bold
tag (each
tag should be given a unique name). This is a simple replace
tag which looks
for a tag starting [b]
and ending in [/b]
. It calls the replace
subroutine passing a reference to the tag object (a Template::TT3::Tag::Replace
object) and the text scanned. The subroutine simply returns the text embedded
in new HTML tags (but of course, it could do anything you like). We then do
the same for an italic tag, and any others we might need.