Эквивалент py:strip для Мако?
Я конвертирую кучу шаблонов Генши в Мако.
Я часто использую это в Genshi:
<span class="special" py:strip="challenge">Company</span>
То, что это делает в Genshi, это убирает теги класса и просто оставляет слово "Компания", когда вызов верен.
Какой лучший способ сделать это в Мако?
Я придумал
%, если не вызов:
% endif
Компания
%, если не вызов:
SPAN>
% endif
Но две управляющие структуры кажутся одним многим.
Или это
%, если не вызов:
Компания span>% остальное:
Компания
% endif
Это только одна структура управления, но я повторяю слово компания дважды. Это не плохо здесь, но будет ужасно, когда у меня будет что-то намного большее, чем слово Company в промежутке.
Должен быть элегантный эквивалент py: strip для Mako, нет?
2 ответа
Mako Def может помочь вам. Это позволяет определенному королю "функции" определяться и применяться к содержимому несколько раз по всему шаблону.
Наиболее полезным способом использования Def может быть Def со встроенным содержимым, которое позволяет
<%self:buildtable>
I am the table body.
</%self:buildtable>
Затем обработайте содержимое, как определено в Def.
В Мако нет эквивалента для py:strip. Потому что Мако работает с байтами, а не с тегами html/xml.
Pyramid, помимо Mako, поставляется с Chameleon(механизм шаблонов XML/HTML, такой как Genshi). У хамелеона это будет:
<span class="special" tal:omit-tag="challenge">Company</span>