Quando si utilizza =
in Haml per includere i risultati di uno script, Haml reindividerà il testo inserito in modo che corrisponda al rientro di dove è incluso. Ad esempio, se si dispone di Haml che sembra qualcosa di simile:
%html
%body
.foo
= insert_something
e insert_something
restituisce un po 'di HTML come questo:
<p>
This is possily generated from Markdown.
</p>
poi il codice HTML risultante sarà simile a questa:
<html>
<body>
<div class='foo'>
<p>
This is possily generated from Markdown.
</p>
</div>
</body>
</html>
Nota come l'elemento p
è rientrato per corrispondere alla sua posizione nel documento. Normalmente questo non importa, a causa del modo in cui lo spazio bianco in HTML viene compresso. Tuttavia ci sono elementi HTML in cui lo spazio bianco è importante, in particolare pre
.
Come appare sta accadendo qui è che il vostro Markdown sta generando qualcosa come
<pre><code>line 1 is fine
line 2 is wrapping
</code></pre>
e quando è incluso nel file Haml (sto cercando di indovinare che si sta utilizzando layout Haml con = yield
per includere il Markdown) viene indentato e lo spazio bianco viene visualizzato quando si visualizza la pagina. Nota come la prima riga è immediatamente dopo i tag di apertura quindi non ci sono spazi bianchi extra.
Ci sono un paio di modi per risolvere questo problema. Se imposti lo :ugly
option, Haml non reinditerà blocchi come questo (mi dispiace non so come hai impostato le opzioni Haml in Nanoc).
È inoltre possibile utilizzare find_and_preserve
helper method. Questo sostituisce tutte le nuove righe nei tag sensibili spazi bianchi con entità HTML 

, in modo che essi non saranno interessati dal spazi bianchi extra quando rientrato:
= find_and_preserve(yield)
Haml fornisce un modo semplice per usare find_and_preserve
; ~
works the same as =
, except that it runs find_and_preserve
on the result, quindi puoi fare:
~ yield
grazie! Il metodo 'find_and_preserve' funziona come un incantesimo! :) – mrmnmly
Se non sbaglio, puoi usare '~ yield' invece di' = find_and_preserve (yield) '. – ddfreyne
@ddfreyne - Sì hai ragione, ['~' funziona come '= find_and_preserve'] (http://haml.info/docs/yardoc/file.REFERENCE.html#tilde). Lo aggiungerò alla risposta. – matt