Шаблоны Bugzilla: в чем разница между [% и [% +] - PullRequest
2 голосов
/ 27 января 2010

Код в шаблонах Bugzilla обычно разделяется [% и%]. Но иногда я вижу [% + и [% -. Может кто-нибудь объяснить разницу или указать мне подходящую документацию? В этом случае Google подвел меня.

Например:

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

или

[%+ END %]

Ответы [ 2 ]

2 голосов
/ 28 января 2010

Вот что я написал для нашей команды в прошлом году:

Я был менее осведомлен о поведении ТТ, чем следовало бы, и другой член нашей команды признался мне, что он был даже менее информирован, чем я!

Это краткое объяснение того, как работает чампинг.

Предположим, у меня есть следующий шаблон с переменной 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 не установлен.

Вы можете явно обозначить поведение при смешивании с одним из символов -, =, ~ и + после '[%' или до '%]'. '-' обозначает уровень 1 CHOMP, = обозначает уровень 2 CHOMP, ~ обозначает уровень 3 CHOMP, + обозначает отсутствие помехи независимо от того, установлен ли он в общей конфигурации.

Итак, повторим пример:

<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.

2 голосов
/ 27 января 2010

[%- (или -%]) удаляет начальные (конечные) пробелы; [%+ (или +%]) поддерживает его. См. PRE_CHOMP, POST_CHOMP в Руководстве по Toolkit (шаблоны Bugzilla используют Template Toolkit) для подробной информации (включая [= и [~:)).

...