frontmatter

一个处理 YAML 和格式化 Markdown 前置信息的处理器

源码

FrontmatterProc

 FrontmatterProc (nb)

一个处理 YAML 和格式化 Markdown 前置信息的处理器

可以通过两种方式将 YAML 前置信息添加到 notebook 中

  1. 通过添加一个原始 notebook 单元格,其中第一行和最后一行是 ---,中间是 YAML,或者
  2. 一个特殊格式化的 markdown 单元格。第一行应以单个 # 开头(创建 H1 标题),并成为标题。然后,可选地,以 > 开头的一行(创建引用块),它成为描述。最后,零行或多行以 - 开头(创建列表),每行包含 YAML。(如果在原始单元格的前置信息中已定义“title”,则 markdown 单元格将被忽略。)

例如,我们的测试 notebook 包含以下 markdown 单元格

# a title
> A description
- key1: value1
- key2: value2
- categories: [c1, c2]

它还包含以下原始单元格

---
execute:
  echo: false
---

当我们使用 FrontmatterProc 进行处理时,这两者都将被移除,并在顶部添加一个包含合并后 YAML 前置信息的原始单元格

nbp = NBProcessor(_test_file, procs=FrontmatterProc)
nbp.process()
print(nbp.nb.cells[0].source)
---
categories:
- c1
- c2
description: A description
execute:
  echo: false
key1: value1
key2: value2
output-file: docs_test.html
title: a title

---

此外,notebook 中会添加一个 frontmatter_ 属性,其中包含这些信息,格式为 dict

d = nbp.nb.frontmatter_
d
{'execute': {'echo': False},
 'title': 'a title',
 'description': 'A description',
 'key1': 'value1',
 'key2': 'value2',
 'categories': ['c1', 'c2'],
 'output-file': 'docs_test.html'}