YFM变量中的代码段/块

时间:2015-08-13 18:50:44

标签: yaml assemble yaml-front-matter

我试图从Litmus中获取代码片段,以便在我的Assemble.io项目中使用(HTML电子邮件)。典型的代码块如下所示:

<style>@media print{ #_t { background-image: url('https://0me4e2bg.emltrk.com/0me4e2bg?p&d=%%Email%%');}} div.OutlookMessageHeader {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} table.moz-email-headers-table {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} blockquote #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} #MailContainerBody #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')}</style><div id="_t"></div>
<img src="https://0me4e2bg.emltrk.com/0me4e2bg?d=%%Email%%" width="1" height="1" border="0" />

理想情况下,我很乐意把这一切都放到一个YFM变量中,我尝试过这个变量。我相信解析器会卡在#,引号,花括号或上面的任何组合上。我已经尝试将代码块包装在&#39;&#39;,&#34;&#34;,``和```中,这些都不起作用。现在我已经采用了该块的变量部分(在本例中为0me4e2bg)并在我的YFM中使用了它,这非常有效,但我确信在YFM中使用CSS和HTML块/片段已经发生在别人身上,我很好奇是否有解决方案?是不是我没有正确地逃脱它?谢谢!

编辑:在尝试Anthon建议的答案后,我收到以下错误

can not read an implicit mapping pair; a colon is missed

看起来像是@media中的@?

1 个答案:

答案 0 :(得分:1)

YAML中的标量不需要引号,除非它有特殊字符,并且在你的情况下确实如此。引用的标量可以使用单引号,其中需要重复现有的单引号,或者可以使用反斜杠转义的双引号。

如果你希望你的字符串使用文字块引用是最好的方法,唯一有问题的是启动空格和行尾空白(即在换行符之前)。您应该能够将代码块分配给变量code,如下所示:

---
title: YAML Front Matter
description: A very simple way to add structured data to a page.
code: |
  <style>@media print{ #_t { background-image: url('https://0me4e2bg.emltrk.com/0me4e2bg?p&d=%%Email%%');}} div.OutlookMessageHeader {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} table.moz-email-headers-table {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} blockquote #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')} #MailContainerBody #_t {background-image:url('https://0me4e2bg.emltrk.com/0me4e2bg?f&d=%%Email%%')}</style><div id="_t"></div>
  <img src="https://0me4e2bg.emltrk.com/0me4e2bg?d=%%Email%%" width="1" height="1" border="0" />
---
<h1> {{ title }} </h1>

您必须确保code下的缩进是一致的,这通常比解析字符串以便转义字符更容易。

你可以,例如check online第一部分是有效的YAML。