.TH "" "" "" "" ""
.SH NAME
.PP
cmark \- CommonMark parsing, manipulating, and rendering
.SH SIMPLE INTERFACE
.IP
.nf
\f[C]
#define\ CMARK_VERSION\ "0.1"
\f[]
.fi
.PP
Current version of library.
.IP
.nf
\f[C]
char\ *cmark_markdown_to_html(const\ char\ *text,\ int\ len);
\f[]
.fi
.PP
Convert \f[C]text\f[] (assumed to be a UTF\-8 encoded string with length
\f[C]len\f[]) from CommonMark Markdown to HTML, returning a
null\-terminated, UTF\-8\-encoded string.
.SH NODE STRUCTURE
.IP
.nf
\f[C]
typedef\ enum\ {
\ \ \ \ //\ Block
\ \ \ \ CMARK_NODE_DOCUMENT,
\ \ \ \ CMARK_NODE_BLOCK_QUOTE,
\ \ \ \ CMARK_NODE_LIST,
\ \ \ \ CMARK_NODE_LIST_ITEM,
\ \ \ \ CMARK_NODE_CODE_BLOCK,
\ \ \ \ CMARK_NODE_HTML,
\ \ \ \ CMARK_NODE_PARAGRAPH,
\ \ \ \ CMARK_NODE_HEADER,
\ \ \ \ CMARK_NODE_HRULE,
\ \ \ \ CMARK_NODE_REFERENCE_DEF,


typedef\ enum\ {
\ \ \ \ CMARK_NO_LIST,
\ \ \ \ CMARK_BULLET_LIST,
\ \ \ \ CMARK_ORDERED_LIST
}\ \ cmark_list_type;


typedef\ enum\ {
\ \ \ \ CMARK_PERIOD_DELIM,
\ \ \ \ CMARK_PAREN_DELIM
}\ cmark_delim_type;
\f[]
.fi
.SH CREATING AND DESTORYING NODES
.IP
.nf
\f[C]
cmark_node*
cmark_node_new(cmark_node_type\ type);


void
cmark_node_free(cmark_node\ *node);
\f[]
.fi
.SH TREE TRAVERSAL
.IP
.nf
\f[C]
cmark_node*
cmark_node_next(cmark_node\ *node);


cmark_node*
cmark_node_previous(cmark_node\ *node);


cmark_node*
cmark_node_parent(cmark_node\ *node);


cmark_node*
cmark_node_first_child(cmark_node\ *node);


cmark_node*
cmark_node_last_child(cmark_node\ *node);
\f[]
.fi
.SH ACCESSORS
.IP
.nf
\f[C]
cmark_node_type
cmark_node_get_type(cmark_node\ *node);


const\ char*
cmark_node_get_string_content(cmark_node\ *node);


int
cmark_node_set_string_content(cmark_node\ *node,\ const\ char\ *content);


int
cmark_node_get_header_level(cmark_node\ *node);


int
cmark_node_set_header_level(cmark_node\ *node,\ int\ level);


cmark_list_type
cmark_node_get_list_type(cmark_node\ *node);


int
cmark_node_set_list_type(cmark_node\ *node,\ cmark_list_type\ type);


int
cmark_node_get_list_start(cmark_node\ *node);


int
cmark_node_set_list_start(cmark_node\ *node,\ int\ start);


int
cmark_node_get_list_tight(cmark_node\ *node);


int
cmark_node_set_list_tight(cmark_node\ *node,\ int\ tight);


const\ char*
cmark_node_get_fence_info(cmark_node\ *node);


int
cmark_node_set_fence_info(cmark_node\ *node,\ const\ char\ *info);


const\ char*
cmark_node_get_url(cmark_node\ *node);


int
cmark_node_set_url(cmark_node\ *node,\ const\ char\ *url);


const\ char*
cmark_node_get_title(cmark_node\ *node);


int
cmark_node_set_title(cmark_node\ *node,\ const\ char\ *title);


int
cmark_node_get_start_line(cmark_node\ *node);


int
cmark_node_get_start_column(cmark_node\ *node);


int
cmark_node_get_end_line(cmark_node\ *node);
\f[]
.fi
.SH TREE MANIPULATION
.IP
.nf
\f[C]
void
cmark_node_unlink(cmark_node\ *node);


int
cmark_node_insert_before(cmark_node\ *node,\ cmark_node\ *sibling);


int
cmark_node_insert_after(cmark_node\ *node,\ cmark_node\ *sibling);


int
cmark_node_prepend_child(cmark_node\ *node,\ cmark_node\ *child);


int
cmark_node_append_child(cmark_node\ *node,\ cmark_node\ *child);
\f[]
.fi
.SH PARSING
.IP
.nf
\f[C]
cmark_parser\ *cmark_parser_new();



void\ cmark_parser_free(cmark_parser\ *parser);



cmark_node\ *cmark_parser_finish(cmark_parser\ *parser);



void\ cmark_parser_push(cmark_parser\ *parser,\ const\ char\ *buffer,\ size_t\ len);



cmark_node\ *cmark_parse_document(const\ char\ *buffer,\ size_t\ len);



cmark_node\ *cmark_parse_file(FILE\ *f);
\f[]
.fi
.SH RENDERING
.IP
.nf
\f[C]
char\ *cmark_render_ast(cmark_node\ *root);



char\ *cmark_render_html(cmark_node\ *root);
\f[]
.fi
.SH AUTHORS
.PP
John MacFarlane, Vicent Marti, Kārlis Gaņģis, Nick Wellnhofer.