Когда вы используете =
в Haml для включения результатов скрипта, Haml изменит отступ вставленного текста так, чтобы он соответствовал отступу того места, где он был включен. Например, если у вас есть Haml, это выглядит примерно так:
%html
%body
.foo
= insert_something
а insert_something
возвращает такой HTML-код:
<p>
This is possily generated from Markdown.
</p>
тогда результирующий HTML будет выглядеть так:
<html>
<body>
<div class='foo'>
<p>
This is possily generated from Markdown.
</p>
</div>
</body>
</html>
Обратите внимание на отступ элемента p
, соответствующий его положению в документе. Обычно это не имеет значения, поскольку пробелы в HTML свернуты. Однако есть элементы HTML, где важны пробелы, в частности pre
.
Похоже, что здесь происходит то, что ваш Markdown генерирует что-то вроде
<pre><code>line 1 is fine
line 2 is wrapping
</code></pre>
и когда он включается в ваш файл Haml (я предполагаю, что вы используете макеты Haml с = yield
для включения Markdown), он получает отступ, и при просмотре страницы появляется пробел. Обратите внимание, что первая строка находится сразу после открывающих тегов, поэтому лишних пробелов нет.
Есть несколько способов исправить это. Если вы установите параметр :ugly
, Haml не будет повторно такие блоки с отступом (извините, я не знаю, как вы устанавливаете параметры Haml в Nanoc).
Вы также можете использовать find_and_preserve
вспомогательный метод. Это заменяет все новые строки в тегах, чувствительных к пробелам, на объект HTML 

, чтобы на них не влияли дополнительные пробелы при отступе:
= find_and_preserve(yield)
Haml предоставляет простой способ использования find_and_preserve
; ~
работает так же, как =
, за исключением того, что для результата выполняется find_and_preserve
, так что вы можете сделать:
~ yield
person
matt
schedule
18.05.2013