Как использовать фильтр HTML в аргументах макроса в Template Toolkit?

У меня примерно так: [% query | html %]

Теперь я хотел бы использовать его как

[% MACRO l(text, args) BLOCK; c.localize(text, args); END; %] 
[% l('text:<b>[_1]</b> no:[_2]', [query | html,2]) %]

Если вы попробуете этот пример, он не сработает, потому что | там нельзя использовать. Это не поддерживается Template Toolkit. Я хочу HTML-escape query. Как я могу это сделать?

Убрать <b> из кавычек не является решением, потому что перевод может иметь другой порядок, как указано выше.


person Aftershock    schedule 31.01.2011    source источник
comment
Не очень понятно, о чем вы спрашиваете. Не могли бы вы опубликовать полный (но краткий) пример, который мы можем запустить через tpage.   -  person Dave Cross    schedule 31.01.2011


Ответы (1)


Вы можете [% USE HTML %] и экранировать конкретный параметр, например:

[% USE HTML %]
[%# your code above %]
[% l('text:<b>[_1]</b> no:[_2]',  HTML.escape(query), 2) %]
person mfontani    schedule 31.01.2011
comment
невозможно, потому что в действительности все гораздо сложнее. Я собираюсь обновить пример, потому что порядок аргументов может измениться. - person Aftershock; 31.01.2011
comment
Обновлено сейчас, когда вы изменили свой вопрос - person mfontani; 31.01.2011