Skip to content

yaml

把取值序列化为 YAML。

语法

knap
{{ value | yaml }}
{{ value | yaml:flow }}

用法

  • 数组与对象默认使用两空格缩进的块样式。传入 flow 可得到紧凑的行内集合。
  • 接受有类型的数组与对象,或已序列化的 JSON 集合,包括 wikilink 等过滤器的输出。
  • 在集合内部,字符串保持带引号,数字、布尔值和 null 保留其类型。空数组与空对象在两种样式下都写作 []{}
  • 对于独立的标量,规范形式的数字、布尔值和 null 会原样保留,其余文本会加引号。多行字符串使用转义换行。
  • 输出不带结尾换行,也不含 frontmatter 定界符。块集合请写在属性下一行,并用 indent:2 缩进;或者改用 yaml_property 格式化完整的属性。

示例

标量

Data
json
{
  "title": "A: value #1"
}
Template
knap
{{ title | yaml }}
Output
md
"A: value #1"

块列表

Data
json
{
  "genres": [
    "Action",
    "Sci-fi"
  ]
}
Template
knap
genre:
{{ genres | yaml | indent:2 }}
Output
md
genre:
  - "Action"
  - "Sci-fi"

行内列表

Data
json
{
  "genres": [
    "Action",
    "Sci-fi"
  ]
}
Template
knap
genre: {{ genres | yaml:flow }}
Output
md
genre: ["Action","Sci-fi"]

从对象生成 frontmatter

Data
json
{
  "metadata": {
    "year": 1999,
    "genre": [
      "Action",
      "Sci-fi"
    ]
  }
}
Template
knap
---
{{ metadata | yaml }}
---
Output
md
---
year: 1999
genre:
  - "Action"
  - "Sci-fi"
---
Data
json
{
  "directors": [
    "Lana Wachowski",
    "Lilly Wachowski"
  ]
}
Template
knap
director:
{{ directors | wikilink | yaml | indent:2 }}
Output
md
director:
  - "[[Lana Wachowski]]"
  - "[[Lilly Wachowski]]"