【发布时间】:2011-01-10 01:04:12
【问题描述】:
Bugzilla 模板中的代码通常由 [% 和 %] 分隔。但有时我会看到 [%+ 和 [%-.有人可以解释区别或指出合适的文件吗?谷歌这次让我失望了。
例如:
[%- event.value.subject FILTER html %]
或
[%+ END %]
【问题讨论】:
标签: syntax bugzilla template-toolkit
Bugzilla 模板中的代码通常由 [% 和 %] 分隔。但有时我会看到 [%+ 和 [%-.有人可以解释区别或指出合适的文件吗?谷歌这次让我失望了。
例如:
[%- event.value.subject FILTER html %]
或
[%+ END %]
【问题讨论】:
标签: syntax bugzilla template-toolkit
[%-(或-%])删除前导(尾随)空格; [%+(或+%])维护它。有关血腥细节(包括[= 和[~ :)),请参阅模板工具包手册中的PRE_CHOMP, POST_CHOMP(Bugzilla 模板使用模板工具包)。
【讨论】:
这是我去年为我们的团队写的:
我对 TT 的行为的了解比我应该了解的要少,我们团队的另一位成员向我承认,他比我更了解情况!
这是对咀嚼工作原理的简要说明。
假设我有以下模板,变量 x = 'foo'
<td>
[% x %]
</td>
会变成
<td>
foo
</td>
注意第二行开头的空格。
TT 具有 PRE_CHOMP 和 POST_CHOMP 的配置设置。
如果 PRE_CHOMP 为 1,则删除指令前面的所有空格,包括换行符。例子变成了
<td>foo
</td>
如果 POST_CHOMP 为 1,则在另一端发生相反的情况:
<td>
foo</td>
如果 PRE/POST_CHOMP 为 2,则所有前面/后面的空格都折叠为一个空格:
<td> foo </td>
如果 PRE/POST_CHOMP 为 3,则消除所有前面/后面的空格:
<td>foo</td>
==重要==
Bugzilla 配置为 PRE_CHOMP = 1。POST_CHOMP 未设置。
您可以在 '[%' 之后或 '%]' 之前使用字符 -、=、~ 和 + 之一明确表示咀嚼行为。 '-'表示CHOMP 1级,=表示CHOMP 2级,~表示CHOMP 3级,+表示不管整体配置中是否设置都不chomping。
所以重复这个例子:
<td>
[% x %]
</td>
因为我们有 PRE_CHOMP = 1,那么这就变成了
<td>foo
</td>
<td>
[%- x -%]
<td>
变成
<td>foo</td>
<td>
[%= x =%]
</td>
变成<td> foo </td>
<td>
[%~ x ~%]
</td>
变成<td>foo</td>
最后,
<td>
[%+ x %]
</td>
变成
<td>
foo
</td>
要获得更详细的解释,请执行“perldoc Template::Manual::Config”并搜索 CHOMP。
【讨论】: