从Pandoc markdown文件中读取YAML元数据

时间:2017-01-14 22:20:13

标签: yaml pandoc

是否可以从没有Haskell过滤器的markdown文件中提取Pandoc的元数据(title,date等),或解析--to=json输出?

JSON输出特别不方便,因为双字标题看起来像:

$ pandoc -t json posts/test.md | jq '.meta | .title'
{
  "t": "MetaInlines",
  "c": [
    {
      "t": "Str",
      "c": "Test"
    },
    {
      "t": "Space"
    },
    {
      "t": "Str",
      "c": "post"
    }
  ]
}

所以即使在jq阅读标题之后,我们仍然需要重建单词,任何重点,代码或其他任何东西只会使它变得更复杂。

1 个答案:

答案 0 :(得分:3)

我们可以使用template variable $meta-json$

将变量粘贴到一个文件中(带有扩展名,以阻止Pandoc查看它自己的目录),然后将其与pandoc --template=file.ext一起使用。

Pandoc的输出是一个JSON对象,其中包含键"title""date""tags"等,以及来自降价文档的各自值,我们可以轻松地对其进行解析,过滤和操作与jq

$ echo "\$meta-json\$" > /tmp/metadata.pandoc-tpl
$ pandoc --template=/tmp/metadata.pandoc-tpl | jq '.title,.tags'
"The Title"
[
  "a tag",
  "another tag"
]
相关问题