diff options
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/cmark.c | 19 | ||||
-rw-r--r-- | src/cmark.h | 2 | ||||
-rw-r--r-- | src/html/html.c | 2 |
4 files changed, 23 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c0792cd..45b0fec 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,6 +13,7 @@ set(HEADERS html/houdini.h ) set(LIBRARY_SOURCES + cmark.c blocks.c inlines.c print.c diff --git a/src/cmark.c b/src/cmark.c new file mode 100644 index 0000000..064c080 --- /dev/null +++ b/src/cmark.c @@ -0,0 +1,19 @@ +#include <stdlib.h> +#include <assert.h> +#include <stdio.h> + +#include "cmark.h" +#include "buffer.h" + +extern unsigned char *cmark_markdown_to_html(unsigned char *text) +{ + node_block *blocks; + strbuf htmlbuf = GH_BUF_INIT; + + blocks = cmark_parse_document(text, sizeof(text)); + + cmark_render_html(&htmlbuf, blocks); + cmark_free_nodes(blocks); + + return strbuf_detach(&htmlbuf); +} diff --git a/src/cmark.h b/src/cmark.h index 1fb8668..6347901 100644 --- a/src/cmark.h +++ b/src/cmark.h @@ -118,6 +118,8 @@ void cmark_free_nodes(node_block *e); void cmark_debug_print(node_block *root); void cmark_render_html(strbuf *html, node_block *root); +unsigned char *cmark_markdown_to_html(unsigned char *text); + #ifdef __cplusplus } #endif diff --git a/src/html/html.c b/src/html/html.c index ea83992..6b5d614 100644 --- a/src/html/html.c +++ b/src/html/html.c @@ -372,7 +372,7 @@ static void blocks_to_html(strbuf *html, node_block *b) free_render_stack(rstack); } -void cmark_render_html(strbuf *html, node_block *root) +extern void cmark_render_html(strbuf *html, node_block *root) { blocks_to_html(html, root); } |