http://www.perlmonks.org?node_id=1003912

unlinker has asked for the wisdom of the Perl Monks concerning the following question:

Venerable Monks,

Is it possible to process a TT template so that only the INCLUDE (or the INSERT) directives are processed? For example if my template (say outer.tt) is :

Hi [% name %], Some Text here.... [% INCLUDE inner.tt %] Some more text here.....
and inner.tt is:
Product ID: [% product_id %]
I would like to generate the template string:
Hi [% name %], Some Text here.... Product ID: [% product_id %] Some more text here.....

so that only the INCLUDE directive is processed and a new template is generated?

Many Thanks...

Replies are listed 'Best First'.
Re: Partially process'ing Template::Toolkit templates
by roboticus (Chancellor) on Nov 15, 2012 at 02:28 UTC

    unlinker:

    I can think of a couple ways to get that result: First, you could put the other parts of your template in a different include file, and INSERT them. Since TT isn't going to do any processing on the inserted files, you will then have a template that you want.

    ----file1---- Hi [% name %], some text here... ----file2---- Some more text here... ----template---- [% INSERT file1 %] [% INCLUDE inner.tt %] [% INSERT file2 %]

    Alternatively, you could escape out the template sequences in your main template, then when TT processes it, you'd have the template instructions ready.

    It seems odd that you would need that, though. But I've never used it, so it wouldn't be obvious to me in any case.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

Re: Partially process'ing Template::Toolkit templates
by chromatic (Archbishop) on Nov 15, 2012 at 06:20 UTC

    You can use the TAGS directive to change what TT uses as delimiters; this'll let you write regular templates from templates:

    [% TAGS [- -] %] [% translations.EXPLANATION %]