: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 >markup 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: 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: 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. :example DValue ast = markdown_to_ast("# Title"); print(ast.is_array() ? "ast\n" : "empty\n");