2016-09-12 2 views
0

zu überprüfen, habe ich eine YAML-Datei, die mehrere Zeilenumbrüche hat:Wie für Newline von YAML

key: | 
    some stuff 
    some more stuff 
    ... 
    etc. 

ich es in meine HTML-Datei und den Zugriff darauf zu lesen. Ich möchte es brechen, so dass jedes Mal, wenn eine neue Zeile gelesen wird, es einen neuen Absatz erstellt:

<p>some stuff</p> 
<p>some more stuff</p> 
... 
<p>etc.</p> 

Ich versuche es durch einen Filter {{ key | split: '\n' }}, zu laufen, aber das funktioniert nicht (Es sucht nach den Zeichen \ und n anstelle einer tatsächlichen CRLF.) Ich habe festgestellt, dass die Übergabe durch einen inspect Filter in parserable \ n konvertiert, aber dies scheint wie ein hacky Weg, dies zu tun. Gibt es einen besseren Weg?

Vielen Dank im Voraus.

P.S. Ich glaube, das Ändern meiner .html zu .markdown könnte dieses Problem beheben, aber ich würde lieber nicht wechseln, wenn möglich, wegen seiner Tendenz, mich zu zwingen, <p> oder <div> zu haben, selbst wenn ich sie nicht will.

Antwort

1

\n ist eine Regexp-Zeilenvorschub-Zeichenklasse. Leider weiß Flüssigkeit das nicht. Aber wir können eine Sache schaffen, die Flüssigkeit verstehen wird: ein echter Zeilenvorschub.

Dies ist der Trick:

# _config.yml 

newline: > 
    : 

{{ site.newline | inspect }} enthält jetzt ": \ n" mit einer Fördergezogene Linie darin. Beachten Sie, dass der Doppelpunkt hier ist, um den Zeilenvorschub beim Analysieren von Frontparts zu erhalten. Es kann durch jedes andere Zeichen ersetzt werden, aber es ist erforderlich.

Das vollständige Tag ist {% assign newline = site.newline | remove: ":" %}. Wir haben jetzt einen sauberen Zeilenvorschub in unserem Var.

Wir können jetzt unsere multi-Linien var mit {% assign keyArray = page.key | split: newline %} teilen, und wir erhalten {{ keyArray | inspect }} output>> ["some stuff", "some more stuff", "...", "etc."].

+0

Das sieht definitiv wie ein weniger hacky Weg, es zu tun. Danke vielmals! –