2

Bugzilla 模板中的代码通常由 [% 和 %] 分隔。但有时我会看到 [%+ 和 [%-. 有人可以解释区别或指出合适的文件吗?谷歌这次让我失望了。

例如:

[%- event.value.subject FILTER html %]

或者

[%+ END %]
4

2 回答 2

2

[%-(或-%])删除前导(尾随)空格;[%+(或+%])维护它。请参阅模板工具包手册中的PRE_CHOMP、POST_CHOMP(Bugzilla 模板使用模板工具包)了解血腥细节(包括[=[~:))。

于 2010-01-27T16:28:54.243 回答
2

这是我去年为我们的团队写的东西:

我对 TT 的行为的了解比我应该了解的要少,我们团队的另一位成员向我承认,他比我更了解情况!

这是对chomping如何工作的简要说明。

假设我有以下模板,变量 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。

于 2010-01-28T00:13:24.043 回答