85 lines
2.0 KiB
Plaintext
85 lines
2.0 KiB
Plaintext
:sig
|
|
DValue markdown_to_ast(String src)
|
|
DValue markdown_to_ast(String src, DValue options)
|
|
|
|
:params
|
|
src : markdown source text
|
|
options : optional markdown options tree
|
|
return value : a `DValue` document AST
|
|
|
|
:see
|
|
markdown_to_html
|
|
component
|
|
component_render
|
|
json_encode
|
|
0_DValue
|
|
|
|
:content
|
|
Parses Markdown source into a structured `DValue` document tree.
|
|
|
|
The parser targets a practical GitHub-flavored subset by default:
|
|
|
|
- ATX headings with `#`
|
|
- setext headings
|
|
- paragraphs
|
|
- blockquotes
|
|
- ordered and unordered lists
|
|
- task list items
|
|
- fenced code blocks
|
|
- tables
|
|
- horizontal rules
|
|
- emphasis, strong, and strikethrough
|
|
- links, images, autolinks, and code spans
|
|
- `:::` directive blocks for component-based extensions
|
|
|
|
The returned AST uses `type` plus node-specific fields such as `level`, `text`, `lang`, `href`, `src`, `name`, `argument`, `attrs`, and `children`.
|
|
|
|
Top-level documents use:
|
|
|
|
```text
|
|
type = "document"
|
|
children = [...]
|
|
```
|
|
|
|
Common block nodes:
|
|
|
|
- `heading`
|
|
- `paragraph`
|
|
- `blockquote`
|
|
- `list`
|
|
- `list_item`
|
|
- `code_block`
|
|
- `table`
|
|
- `directive`
|
|
- `hr`
|
|
|
|
Common inline nodes:
|
|
|
|
- `text`
|
|
- `code`
|
|
- `strong`
|
|
- `em`
|
|
- `strike`
|
|
- `link`
|
|
- `image`
|
|
- `raw_html`
|
|
|
|
Example:
|
|
|
|
```uce
|
|
DValue options = json_decode("{\"components\":{\":::warning\":\"components/markdown/warning\"}}");
|
|
DValue ast = markdown_to_ast(file_get_contents("README.md"), options);
|
|
print(json_encode(ast));
|
|
```
|
|
|
|
Options:
|
|
|
|
- `options["gfm"]` enables GitHub-style extras such as tables, task lists, strikethrough, and bare-URL autolinks. Defaults to `true`.
|
|
- `options["allow_html"]` allows raw HTML passthrough nodes to be captured and rendered. Defaults to `false`.
|
|
- `options["components"]` provides the component hook map later used by `markdown_to_html()`. The parser preserves directive data needed by those hooks.
|
|
|
|
Related:
|
|
|
|
- PHP: CommonMark or Parsedown parsing pipelines that expose a syntax tree or token stream
|
|
- JavaScript / Node.js: `remark`, `micromark`, or `markdown-it` token streams and AST-like structures
|