Можете ли вы определить макрос скорости, чтобы «обернуть» другой контент? - PullRequest
10 голосов
/ 08 февраля 2012

Я пытаюсь абстрагироваться от общего сценария в сгенерированной разметке, где мне нужна пара тегов, чтобы «обернуть» произвольный контент.Так что вместо того, чтобы писать это

<div class="container">
   <p class="someClass">Some header</p>
   <div id="foo">
     <!-- The real content that changes -->
   </div>
</div>

, я мог бы написать что-то "как"

#????
 <!-- The real content that changes
#end

Где, очевидно, я не знаю, что за # ????было бы.

Насколько я знаю, это невозможно сделать с помощью макросов, за исключением определения макроса для начала блока и макроса для конца блока.

#macro(startContained)
<div class="container">
   <p class="someClass">Some header</p>
   <div id="foo">
#end

#macro(endContained)
   </div>
</div>
#end

#startContained
<!-- The real content -->
#endContained

Есть ли лучший способ сделать это?

1 Ответ

12 голосов
/ 08 февраля 2012

Используйте синтаксис вызова макроса #@ вместе с переменной $!bodyContent:

#macro(wrapper)
  <div class="container">
    <p class="someClass">Some header</p>
    <div id="foo">
      $!bodyContent##
    </div>
  </div>
#end

#@wrapper()
  The real content that changes.
#end

#@wrapper()
  Other different content.
#end

Отображается как:

<div class="container">
  <p class="someClass">Some header</p>
  <div id="foo">
    The real content that changes.
  </div>
</div>

<div class="container">
  <p class="someClass">Some header</p>
  <div id="foo">
    Other different content.
  </div>
</div>

(## в теле макроса удаляет завершающие пробелы; для HTML это может не иметь значения.)

...