Эквивалент py:strip для Мако?

Я конвертирую кучу шаблонов Генши в Мако.

Я часто использую это в Genshi:

<span class="special" py:strip="challenge">Company</span>

То, что это делает в Genshi, это убирает теги класса и просто оставляет слово "Компания", когда вызов верен.

Какой лучший способ сделать это в Мако?

Я придумал

   %, если не вызов:
       
   % endif   
   Компания
   %, если не вызов:
       
   % endif

Но две управляющие структуры кажутся одним многим.

Или это

%, если не вызов:
  Компания% остальное:
  Компания
% 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>
Другие вопросы по тегам