Markdown 语法解析:把 Markdown 源文解析成 AST(fork 自 mizchi/markdown,仅保留解析链路)
import {
"NoahLiu/mdparse@0.1.0",
}///|
fn example() -> Unit {
let res = @mdparse.parse("# 标题\n\n段落含 **粗体** 与 [链接](https://example.com)。\n")
for block in res.document.children {
println(block)
}
// 引用式链接的文档级定义:label → url
for def in res.definitions {
println("\{def.label} => \{def.url}")
}
}| 字段 | 类型 | 含义 |
|---|---|---|
| document | Document | 文档根,children : Array[Block] |
| definitions | Array[LinkDefinition] | 引用式链接/图片的文档级定义(label、url) |
pub(all) enum Block {
ThematicBreak(marker~ : Char, count~ : Int, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Heading(level~ : Int, style~ : HeadingStyle, children~ : Array[Inline], closing_hashes~ : Int, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Paragraph(children~ : Array[Inline], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
FencedCode(fence_marker~ : FenceMarker, fence_length~ : Int, info~ : String, code~ : String, indent~ : Int, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
MathBlock(value~ : String, fence_length~ : Int, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Directive(name~ : String, meta~ : String, children~ : Array[Block], fence_length~ : Int, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
DefinitionList(items~ : Array[DefinitionItem], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Attributed(block~ : Block, attributes~ : Array[MarkdownAttribute], span~ : Span)
IndentedCode(code~ : String, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Blockquote(children~ : Array[Block], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Alert(kind~ : AlertKind, children~ : Array[Block], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
BulletList(marker~ : BulletMarker, tight~ : Bool, items~ : Array[ListItem], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
OrderedList(start~ : Int, delimiter~ : OrderedDelimiter, tight~ : Bool, items~ : Array[ListItem], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
HtmlBlock(html~ : String, span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
Table(header~ : Array[TableCell], alignments~ : Array[TableAlign], rows~ : Array[Array[TableCell]], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
BlankLines(count~ : Int, span~ : Span)
FootnoteDefinition(label~ : String, children~ : Array[Block], span~ : Span, leading_trivia~ : Trivia, trailing_trivia~ : Trivia)
}impl Show for BulletMarkerpub(all) struct CodeBlockInfo {
lang : String
filename : String
meta : String
}pub(all) struct Document {
frontmatter : Frontmatter?
children : Array[Block]
definitions : Array[LinkDefinition]
span : Span
}impl Show for EmphasisMarkerimpl Show for FenceMarkerimpl Show for HardBreakStyleimpl Show for HeadingStylepub(all) enum Inline {
Text(content~ : String, span~ : Span)
SoftBreak(span~ : Span)
HardBreak(style~ : HardBreakStyle, span~ : Span)
Emphasis(marker~ : EmphasisMarker, children~ : Array[Inline], span~ : Span)
Strong(marker~ : EmphasisMarker, children~ : Array[Inline], span~ : Span)
Strikethrough(children~ : Array[Inline], span~ : Span)
Code(content~ : String, backtick_count~ : Int, span~ : Span)
Directive(name~ : String, label~ : String, attributes~ : Array[MarkdownAttribute], span~ : Span)
WikiLink(target~ : String, label~ : String, fragment~ : String, span~ : Span)
Link(children~ : Array[Inline], url~ : String, title~ : String, span~ : Span)
RefLink(children~ : Array[Inline], label~ : String, style~ : ReferenceStyle, span~ : Span)
Autolink(url~ : String, is_email~ : Bool, span~ : Span)
Image(alt~ : String, url~ : String, title~ : String, span~ : Span)
RefImage(alt~ : String, label~ : String, style~ : ReferenceStyle, span~ : Span)
HtmlInline(html~ : String, span~ : Span)
FootnoteReference(label~ : String, span~ : Span)
}impl Show for OrderedDelimiterpub struct RenderOptions {
code_highlighter : (CodeBlockInfo, String) -> String?
math_block_renderer : (String) -> String?
}fn RenderOptions::with_highlighter(highlighter : (CodeBlockInfo, String) -> String) -> RenderOptionsfn RenderOptions::with_math_block_renderer(self : RenderOptions, renderer : (String) -> String) -> RenderOptionsfn RenderOptions::with_simple_highlighter(highlighter : (String, String) -> String) -> RenderOptionsimpl Show for TableAlignfn is_unicode_punctuation(c : Char) -> Boolfn is_unicode_whitespace(c : Char) -> BoolInstall
Download zipMarkdown 语法解析:把 Markdown 源文解析成 AST(fork 自 mizchi/markdown,仅保留解析链路)