MarkdownManager API

Beta

MarkdownManager 类是一个独立的类,提供支持将 Markdown 内容解析和序列化为 Tiptap 的文档模型。

方法

构造函数

new MarkdownManager(options?: {
  marked?: typeof marked,
  markedOptions?: MarkedOptions,
  indentation?: {
    style?: 'space' | 'tab',
    size?: number,
  },
})

MarkdownManager.hasMarked()

根据 marked 库是否可用,返回 truefalse

  • 返回: boolean
const manager = new MarkdownManager()
manager.hasMarked() // true 或 false

MarkdownManager.registerExtension()

注册一个 Tiptap 扩展,用于解析和序列化 Markdown 内容。

  • 返回: void
  • 参数:
    • extension: 要注册的 Tiptap 扩展。
const manager = new MarkdownManager()
manager.registerExtension(MyCustomExtension)

MarkdownManager.parse()

将 Markdown 字符串解析为 Tiptap 文档。

  • 返回: JSON - Tiptap 文档的 JSON 格式。
  • 参数:
    • markdown: 要解析的 Markdown 内容字符串。
const manager = new MarkdownManager()
const doc = manager.parse('# Hello World')

Markdown 解析通过结合正常的空行分隔和   标记(在需要时)来保留连续的空段落。例如,连续空段落中的第一个空段落由空行表示,而同一连续序列中后面的空段落则由   表示,以便在转回 JSON 时保留下来。

MarkdownManager.serialize()

将 Tiptap 文档或 JSON 内容序列化为 Markdown 字符串。

  • 返回: string - 序列化后的 Markdown 字符串。
  • 参数:
    • content: 要序列化的 Tiptap 文档或 JSON 内容。
const manager = new MarkdownManager()
const markdown = manager.serialize(doc)

MarkdownManager.renderNodeToMarkdown()

渲染单个 ProseMirror 节点为其 Markdown 表示。

  • 返回: string - 给定节点对应的 Markdown 字符串。
  • 参数:
    • node: 要渲染的 ProseMirror 节点。
    • parentNode: (可选)该节点的父 ProseMirror 节点。
    • index: (可选)节点在其父节点中的索引。
    • level: (可选)节点的嵌套层级。
const manager = new MarkdownManager()
const markdown = manager.renderNodeToMarkdown(node)

渲染器通过 RenderContext.previousNode 向扩展传递同级上下文,这对于依赖于同一层级上一个节点的决策很有用,例如保留连续的空段落。

MarkdownManager.renderNodes()

渲染一组 ProseMirror 节点为其合并的 Markdown 表示。

  • 返回: string - 给定节点集合的合并 Markdown 字符串。
  • 参数:
    • nodes: 要渲染的 ProseMirror 节点数组。
    • parentNode: (可选)父 ProseMirror 节点。
    • separator: (可选)用于分隔渲染后节点的字符串,默认值为 ''
    • level: (可选)节点的嵌套层级,默认值为 0
    • level: number - 节点的嵌套层级,默认值为 0

属性

Markdown.instance

用于解析 Markdown 内容的 MarkedJS 实例。

Markdown.indentCharacter

用于列表缩进的字符。默认为空格(' ')。

Markdown.indentString

用于列表缩进的字符串。默认为两个空格(' ')。