首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Template Toolkit中输出perl Template ToolKit示例

如何在Template Toolkit中输出perl Template ToolKit示例
EN

Stack Overflow用户
提问于 2012-02-22 01:21:17
回答 2查看 1.6K关注 0票数 3

我正在通过模板工具包文件为模板工具包制作一些文档。目标是显示我正在使用的代码以及代码的输出。现在,我通过复制代码并将所有"%“字符替换为"%”字符串来完成此操作。

所以,我会有这样的东西:

代码语言:javascript
复制
The Template Toolkit code:

    [% FOREACH name IN nameArray %][% name %][% IF !loop.last %], [% END %][% END %]

Produces the output:

    [% FOREACH name IN nameArray %][% name %][% IF !loop.last %], [% END %][% EN D%]

它将输出类似如下的内容:

代码语言:javascript
复制
The Template Toolkit code:

    [% FOREACH name IN nameArray %][% name %][% IF !loop.last %], [% END %][% END %]

Produces the output:

    George, Jane, Judy, Elroy

我的问题是,是否有替代/更好的方法来做到这一点?理想情况下,我不需要每次都有效地复制代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 15:44:24

我找到了一个非常简单的解决方案:

  1. 将示例代码移动到它自己的文件中。
  2. 在主模板中,使用INSERTINCLUDE模板工具包指令调用示例代码文件。

INSERT指令直接输出文件的内容(即不进行任何处理)。在输出文件之前,INCLUDE指令在普通的Template Toolkit中处理该文件。

例如,以以下三个文件为例:

文件: process_template.pl

代码语言:javascript
复制
#!/usr/bin/perl 

use strict;
use warnings;
use Template;

my %data = (
    nameArray => [ 'George', 'Jane', 'Judy', 'Elroy' ]
);

my $tt_obj = Template->new();
$tt_obj->process('main.tmpl', \%data) || die $tt_obj->error();

文件: main.tmpl

代码语言:javascript
复制
The Template Toolkit code:

[% INSERT "code_example.tmpl" %]

Produces the output:

[% INCLUDE "code_example.tmpl" %]

文件: code_example.tmpl

代码语言:javascript
复制
    [% FOREACH name IN nameArray %][%name%][% IF !loop.last %], [%END%][%END%]

当运行"process_template.pl“时,它将产生预期的输出。另外一个好处是,将示例代码片段放在它们自己的文件中可以使它们更易于编辑/管理/维护。

票数 1
EN

Stack Overflow用户

发布于 2012-02-22 03:11:38

您可以将代码赋给一个变量,然后通过管道将其传递给eval filter。要防止在模板中解释[%%]标记,请使用TAGS directive将开始/结束标记设置为其他值。示例:

代码语言:javascript
复制
[% TAGS [- -] %]

The Template Toolkit code:
    [- code = '[% FOREACH name IN nameArray %][% name %][% IF !loop.last %], [% END %][% END %]' -]
    [- code -]

Produces the output:
    [- code | eval -]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9382073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档