code wiki / (root) / nx_markdown_block.nx

nx_markdown_block.nx

buildroot/runtime/nx_markdown_block.nx

12239 B359 linesdepth 4pulls 4 transitivereach 25 importersview sourcekind tooltopic markdown
docsdependenciesstructsconstsfunctions

about

markdown_block.nx -- block-level Markdown -> HTML. CommonMark §4 + §5 practical subset. Walks input line-by-line recognising block constructs, sends runs of text through markdown_inline for inline formatting. Supported block-level constructs: # Heading -> <h1>...</h1> (levels 1-6 by # count) ## Subheading -> <h2>...</h2> (blank line) -> closes current paragraph ```fenced -> <pre><code>...</code></pre> - bullet -> <ul><li>...</li></ul> * bullet -> <ul><li>...</li></ul> 1. ordered -> <ol><li>...</li></ol> regular text -> <p>...</p> NOT supported (future markdown_block_ext.nx): tables, blockquotes, setext headings (=== / ---), horizontal rules, link reference definitions, indented code blocks. Composes markdown_inline + html_escape. Invariants: B1 Fenced code block content is NOT run through inline markdown -- raw text with html_escape only. B2 List items have inline markdown applied to their content. B3 Consecutive list items collapse into one <ul> / <ol>. B4 Output is valid HTML fragment (no <html>/<head>/<body>). nx_safety_envelope: intended_use: "Markdown block-level parser (CommonMark section 4) -- docs / README / nishi-library catalog ingestion" sil_target: SIL1 asil_target: QM dal_target: NONE evidence: [CommonMark_0_30_canonical_basis, sealed_block_kind_enum, no_FP, bounded_block_parse_state_machine] hazard_register: [bug-tape-XSS-via-raw-HTML-passthrough,

dependencies 3 imports · 1 importers

nx_syscalls.nx nx_markdown_inline.nx nx_html_escape.nx nx_markdown_block.nx markdown_block.nx

imports: nx_syscalls.nxnx_markdown_inline.nxnx_html_escape.nx

imported by: markdown_block.nx

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main sys_mmap markdown_block mb_eol mb_is_blank mb_put mb_is_fence mb_put_esc html_escape he_is_safe he_put mb_heading_level mb_put_inline markdown_inline md_put_esc html_escape ↻ md_put mb_is_bullet mb_is_ordered

structs

none

consts

49const MB_MAGIC_2048: i64 = 2048
51const MB_ERR_SHORT: i64 = -1

functions

53func mb_put(out: *u8, cap: i64, off: i64, src: *u8, n: i64) -> i64 {
called by 1: markdown_block
64func mb_put_inline(out: *u8, cap: i64, off: i64,
called by 1: markdown_block calls 1: markdown_inline
72func mb_put_esc(out: *u8, cap: i64, off: i64,
called by 1: markdown_block calls 1: html_escape
80func mb_eol(buf: *u8, n: i64, off: i64) -> i64 {
called by 1: markdown_block
90func mb_heading_level(buf: *u8, off: i64, eol: i64) -> i64 {
called by 1: markdown_block
107func mb_is_fence(buf: *u8, off: i64, eol: i64) -> i64 {
called by 1: markdown_block
118func mb_is_bullet(buf: *u8, off: i64, eol: i64) -> i64 {
called by 1: markdown_block
130func mb_is_ordered(buf: *u8, off: i64, eol: i64) -> i64 {
called by 1: markdown_block
150func mb_is_blank(buf: *u8, off: i64, eol: i64) -> i64 {
called by 1: markdown_block
163func markdown_block(src: *u8, n: i64, out: *u8, cap: i64) -> i64 {
318func main() -> i64 {