从 Pandoc 降价文件中读取 YAML 元数据

OJF*_*ord 5 yaml pandoc

是否可以在没有 Haskell 过滤器或解析--to=json输出的情况下从 Markdown 文件中提取 Pandoc 的元数据(标题、日期等)?

JSON 输出为此特别不方便,因为两个字的标题看起来像:

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

所以即使让jq读完标题,我们仍然需要重构单词,任何强调、代码或其他任何东西只会让它变得更加复杂。

OJF*_*ord 8

我们可以为此使用模板变量$meta-json$

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

Pandoc 的输出是一个带有键"title""date""tags"等的 JSON 对象,以及它们各自来自 Markdown 文档的值,我们可以使用jq轻松解析、过滤和操作。

$ echo '$meta-json$' > /tmp/metadata.pandoc-tpl
$ pandoc --template=/tmp/metadata.pandoc-tpl | jq '.title,.tags'
"The Title"
[
  "a tag",
  "another tag"
]
Run Code Online (Sandbox Code Playgroud)