From 37554bbb7901b7116e1a5006f331968444141b76 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 14 Dec 2014 13:49:53 -0800 Subject: Use as.literal instead of string_content for HTML and code blocks. This is for consistency with the other types of nodes that have literal strings as contents. --- src/blocks.c | 8 ++++++-- src/html.c | 5 ++--- src/node.c | 7 ++----- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/blocks.c b/src/blocks.c index 7648c96..18a6536 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -215,7 +215,6 @@ finalize(cmark_parser *parser, cmark_node* b, int line_number) if (!b->as.code.fenced) { // indented code remove_trailing_blank_lines(&b->string_content); strbuf_putc(&b->string_content, '\n'); - break; } else { // first line of contents becomes info @@ -231,8 +230,13 @@ finalize(cmark_parser *parser, cmark_node* b, int line_number) strbuf_trim(&b->as.code.info); strbuf_unescape(&b->as.code.info); - break; } + b->as.literal = chunk_buf_detach(&b->string_content); + break; + + case NODE_HTML: + b->as.literal = chunk_buf_detach(&b->string_content); + break; case NODE_LIST: // determine tight/loose status b->as.list.tight = true; // tight by default diff --git a/src/html.c b/src/html.c index e733a48..23812df 100644 --- a/src/html.c +++ b/src/html.c @@ -153,14 +153,13 @@ S_render_node(cmark_node *node, cmark_event_type ev_type, void *vstate) strbuf_puts(html, "\">"); } - escape_html(html, node->string_content.ptr, node->string_content.size); + escape_html(html, node->as.literal.data, node->as.literal.len); strbuf_puts(html, "\n"); break; case CMARK_NODE_HTML: cr(html); - strbuf_put(html, node->string_content.ptr, - node->string_content.size); + strbuf_put(html, node->as.literal.data, node->as.literal.len); break; case CMARK_NODE_HRULE: diff --git a/src/node.c b/src/node.c index 276ed46..d74b1fc 100644 --- a/src/node.c +++ b/src/node.c @@ -42,10 +42,12 @@ void S_free_nodes(cmark_node *e) switch (e->type){ case NODE_CODE_BLOCK: strbuf_free(&e->as.code.info); + chunk_free(&e->as.literal); break; case NODE_TEXT: case NODE_INLINE_HTML: case NODE_CODE: + case NODE_HTML: chunk_free(&e->as.literal); break; case NODE_LINK: @@ -183,8 +185,6 @@ cmark_node_get_string_content(cmark_node *node) { switch (node->type) { case NODE_CODE_BLOCK: case NODE_HTML: - return strbuf_cstr(&node->string_content); - case NODE_TEXT: case NODE_INLINE_HTML: case NODE_CODE: @@ -206,9 +206,6 @@ cmark_node_set_string_content(cmark_node *node, const char *content) { switch (node->type) { case NODE_CODE_BLOCK: case NODE_HTML: - strbuf_sets(&node->string_content, content); - return 1; - case NODE_TEXT: case NODE_INLINE_HTML: case NODE_CODE: -- cgit v1.2.3