63#define N_MARKDOWN_BOLD (1u << 0)
65#define N_MARKDOWN_ITALIC (1u << 1)
67#define N_MARKDOWN_CODE (1u << 2)
69#define N_MARKDOWN_LINK (1u << 3)
71#define N_MARKDOWN_STRIKE (1u << 4)
74#define N_MARKDOWN_HEADINGS (1u << 0)
76#define N_MARKDOWN_TABLES (1u << 1)
81#define N_MARKDOWN_AUTOLINKS (1u << 2)
83#define N_MARKDOWN_STRIKETHROUGH (1u << 3)
86#define N_MARKDOWN_ESCAPES (1u << 4)
90#define N_MARKDOWN_ALL (N_MARKDOWN_HEADINGS | N_MARKDOWN_TABLES)
92#define N_MARKDOWN_INLINE_ALL \
93 (N_MARKDOWN_AUTOLINKS | N_MARKDOWN_STRIKETHROUGH | N_MARKDOWN_ESCAPES)
96#define N_MARKDOWN_ALIGN_LEFT 0
98#define N_MARKDOWN_ALIGN_CENTER 1
100#define N_MARKDOWN_ALIGN_RIGHT 2
void n_markdown_free(n_markdown_doc *doc)
free everything a n_markdown_doc owns and zero it
n_markdown_inline * items
n_markdown_block_kind
Block kinds.
@ N_MARKDOWN_HEADING
"## " heading (inl, level)
@ N_MARKDOWN_OL
ordered list (items)
@ N_MARKDOWN_TABLE
pipe table (items, n_cols)
@ N_MARKDOWN_UL
unordered list (items)
@ N_MARKDOWN_CODE_BLOCK
``` fenced code (raw code)
@ N_MARKDOWN_PARA
paragraph
int kind
enum n_markdown_block_kind
unsigned char * align
TABLE: N_MARKDOWN_ALIGN_* per column, n_cols entries, owned.
int n_markdown_has_markup_ex(const char *text, size_t len, unsigned flags)
1 if text contains any markup the given flags would render, else 0
void n_markdown_parse(const char *text, size_t len, n_markdown_doc *out)
parse text (len bytes, plain UTF-8) into out
n_markdown_block * blocks
void n_markdown_parse_ex(const char *text, size_t len, unsigned flags, n_markdown_doc *out)
parse text into out, choosing which optional block kinds to recognise
size_t n_cols
TABLE: cells per row, always at least 1.
int n_markdown_has_markup(const char *text, size_t len)
1 if text contains any renderable markup, else 0
int level
HEADING: 1 to 6.
A parsed document: an owned array of blocks.
One flow of inline runs (a paragraph, a quote, or one list item).
One inline run: visible text, a style bitmask, and (for a link) an already-http(s)-validated url.