如何从自定义jekyll markdown处理器访问YAML frontmatter

时间:2017-07-17 01:21:10

标签: ruby yaml markdown jekyll

如何在Jekyll Markdown处理器中提取YAML前端?

我正在编写一个自定义降价处理器,可以将纯文本歌词转换为HTML以进行reveal.js演示。不同的歌曲有不同的结构。假设我有一首我想要显示的歌曲

1st line of 1st verse
2nd line of 1st verse
3rd line of 1st verse

1st line of chorus
2nd line of chorus
3rd line of chorus

1st line of 2nd verse
2nd line of 2nd verse
3rd line of 2nd verse

1st line of chorus
2nd line of chorus
3rd line of chorus

1st line of 3rd verse
2nd line of 3rd verse
3rd line of 3rd verse

1st line of chorus
2nd line of chorus
3rd line of chorus

我想将输入文件保存到Jekyll DRY中(不要重复自己),所以我希望保留markdown文件类似于此:

1st line of 1st verse
2nd line of 1st verse
3rd line of 1st verse

>1st line of chorus
2nd line of chorus
3rd line of chorus

1st line of 2nd verse
2nd line of 2nd verse
3rd line of 2nd verse

1st line of 3rd verse
2nd line of 3rd verse
3rd line of 3rd verse

并使用>符号告诉markdown这是合唱。我可以轻松地编写一个Ruby扩展来为简单的歌曲做这个,这些歌曲有一个合唱 - 合唱 - 合唱 - 合唱 - 合唱结构(vcvcvc),但是有一些歌曲有桥梁和预先chrouses同样,我也喜欢让Markdown从某种Jekyll YAML前线(vvpcvvpcbc等)获取这个结构。有没有人知道这样做的方式? 如何在Jekyll Markdown处理器中提取YAML前端?

这是我到目前为止的Ruby代码,位于我的_plugins目录中:

class Jekyll::Converters::Markdown::Songify
  def initialize(config)
  rescue LoadError
  end

  def convert(content)
    content =  content.gsub(/\n/, "<br/>")
    content =  content.gsub(/(<br\/>){2,}/,"</section><section>")

    # Populate an array with paragraphs

    # Detect chorus

    # Interleave chorus between all following verses

    # Join paragraphs with <section>

    # Return the HTML verse

    return content
  end
end

0 个答案:

没有答案