diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-11-14 23:07:28 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-11-15 18:34:31 -0800 |
commit | 8f523b0149f250f733d80357320f92ffbe2a8b8f (patch) | |
tree | 1df9572e60d88795ee992089eaf46b0fd7987ce1 /src/cmark.h | |
parent | 694fa11266741aa061477aaca627e0445ba20723 (diff) |
Expose lower-level parsing API.
The new functions cmark_new_doc_parser,
cmark_free_doc_parser, cmark_process_line, and cmark_finish
allow you to feed lines one by one (possibly from several
files) to the parser and call finish when you're done.
This is now used in main for mulitple files.
Diffstat (limited to 'src/cmark.h')
-rw-r--r-- | src/cmark.h | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/src/cmark.h b/src/cmark.h index cb9ea73..ef9bdfb 100644 --- a/src/cmark.h +++ b/src/cmark.h @@ -111,6 +111,15 @@ struct cmark_node_block { typedef struct cmark_node_block cmark_node_block; +struct cmark_doc_parser { + cmark_node_block* head; + cmark_node_block* current; + int line_number; + cmark_strbuf *curline; +}; + +typedef struct cmark_doc_parser cmark_doc_parser; + CMARK_EXPORT void cmark_free_blocks(cmark_node_block *e); @@ -148,6 +157,21 @@ cmark_node_inl* cmark_make_simple(int t); #define cmark_make_strong(contents) cmark_make_inlines(INL_STRONG, contents) CMARK_EXPORT +cmark_doc_parser *cmark_new_doc_parser(); + +CMARK_EXPORT +void cmark_free_doc_parser(cmark_doc_parser *parser); + +CMARK_EXPORT +cmark_node_block *cmark_finish(cmark_doc_parser *parser); + +CMARK_EXPORT +void cmark_process_line(cmark_doc_parser *parser, const unsigned char *buffer, size_t bytes); + +CMARK_EXPORT +cmark_node_block *cmark_finish(cmark_doc_parser *parser); + +CMARK_EXPORT cmark_node_block *cmark_parse_document(const unsigned char *buffer, size_t len); CMARK_EXPORT @@ -203,9 +227,14 @@ unsigned char *cmark_markdown_to_html(unsigned char *text, int len); #define make_softbreak cmark_make_softbreak #define make_emph cmark_make_emph #define make_strong cmark_make_strong - #define make_simple cmark_make_simple - #define make_simple cmark_make_simple - #define make_simple cmark_make_simple + #define make_simple cmark_make_simple + #define make_simple cmark_make_simple + #define make_simple cmark_make_simple + #define doc_parser cmark_doc_parser + #define new_doc_parser cmark_new_doc_parser + #define free_doc_parser cmark_free_doc_parser + #define process_line cmark_process_line + #define finish cmark_finish #endif #ifdef __cplusplus |