如何将Yaml变量(以markdown编写)中的数据输出到HTML Haml文件中?

时间:2017-05-11 22:44:47

标签: yaml markdown haml middleman

在Yaml数据文件aaa.yml中,我有:

yyy: |
     [foo](http://example.com) bar.

我想从Haml文件(zzz.html.haml)中提取此数据。

1 即可。如果我zzz.html.haml

    %p
      = data.aaa.yyy
  • Middleman呈现zzz.html

    <p> [foo](http://example.com) bar</p>

2 即可。如果我这样做:

    %p
      :markdown
        = data.aaa.yyy
  • Middleman渲染:

    <p>= data.aaa.yyy</p>

如何渲染:

<p><a href="http://example.com">foo</a> bar</p>

2 个答案:

答案 0 :(得分:1)

您有一个包含markdown的字符串,并且您希望呈现该markdown并将结果包含在输出中。

一种方法是使用Haml :markdown过滤器。你不能在过滤器中使用普通的Haml语法(就像你尝试过的那样),但你可以在#{...}中使用插值,所以你可以这样做

:markdown
  #{data.aaa.yyy}

更好的方法,如果字符串是一个独立的块,可能是创建一个呈现markdown的帮助方法,然后调用它。

只要你的帮助者添加了以下内容:

def markdown s
  # I'm using kramdown here, but you can use whatever processor you prefer.
  Kramdown::Document.new(s).to_html
end

然后在你的Haml:

= markdown(data.aaa.yyy)

答案 1 :(得分:0)

耶!原来是this helper,它已经在我的config.rb中,但它本身不起作用:

def markdown(text)
  Tilt['markdown'].new { text }.render
end

当我使用第一个帮助器安装此助手时(来自@matt's answer):

def markdown s
  Kramdown::Document.new(s).to_html
end

然后= markdown(foo.bar)工作,这使我的一天! :d