diff options
author | John MacFarlane <[email protected]> | 2014-11-23 07:21:25 -0800 |
---|---|---|
committer | John MacFarlane <[email protected]> | 2014-11-23 07:21:25 -0800 |
commit | f7f010070d59bd2bd9334ef1f5f18e6d1631f9cc (patch) | |
tree | 85287f45145cf43f72c462edce4ef344b60ca6aa /src | |
parent | f28197a69d56eb0f60d5931de58cbbfbb65ee794 (diff) |
Added 'fenced' flag to cmark_code struct, renamed from cmark_fenced_code.
Technically we could do without this, since we can check for
cmark_fence_length > 0. But it makes the code clearer and doesn't
really increase the size of the node struct (because the size of the
union is set by the data for lists).
Diffstat (limited to 'src')
-rw-r--r-- | src/blocks.c | 12 | ||||
-rw-r--r-- | src/node.h | 5 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/blocks.c b/src/blocks.c index 7bf4d3d..5328638 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -194,7 +194,7 @@ static void finalize(cmark_doc_parser *parser, cmark_node* b, int line_number) break; case NODE_CODE_BLOCK: - if (b->as.code.fence_length == 0) { // indented code + if (!b->as.code.fenced) { // indented code remove_trailing_blank_lines(&b->string_content); strbuf_putc(&b->string_content, '\n'); break; @@ -539,7 +539,7 @@ void cmark_process_line(cmark_doc_parser *parser, const char *buffer, } else if (container->type == NODE_CODE_BLOCK) { - if (container->as.code.fence_length == 0) { // indented + if (!container->as.code.fenced) { // indented if (indent >= CODE_INDENT) { offset += CODE_INDENT; } else if (blank) { @@ -608,6 +608,7 @@ void cmark_process_line(cmark_doc_parser *parser, const char *buffer, if (cur->type != NODE_PARAGRAPH && !blank) { offset += CODE_INDENT; container = add_child(parser, container, NODE_CODE_BLOCK, parser->line_number, offset + 1); + container->as.code.fenced = false; container->as.code.fence_char = 0; container->as.code.fence_length = 0; container->as.code.fence_offset = 0; @@ -642,6 +643,7 @@ void cmark_process_line(cmark_doc_parser *parser, const char *buffer, } else if ((matched = scan_open_code_fence(&input, first_nonspace))) { container = add_child(parser, container, NODE_CODE_BLOCK, parser->line_number, first_nonspace + 1); + container->as.code.fenced = true; container->as.code.fence_char = peek_at(&input, first_nonspace); container->as.code.fence_length = matched; container->as.code.fence_offset = first_nonspace - offset; @@ -739,7 +741,7 @@ void cmark_process_line(cmark_doc_parser *parser, const char *buffer, container->type != NODE_BLOCK_QUOTE && container->type != NODE_HEADER && (container->type != NODE_CODE_BLOCK && - container->as.code.fence_length != 0) && + container->as.code.fenced) && !(container->type == NODE_LIST_ITEM && container->first_child == NULL && container->start_line == parser->line_number)); @@ -768,12 +770,12 @@ void cmark_process_line(cmark_doc_parser *parser, const char *buffer, } if (container->type == NODE_CODE_BLOCK && - container->as.code.fence_length == 0) { + !container->as.code.fenced) { add_line(container, &input, offset); } else if (container->type == NODE_CODE_BLOCK && - container->as.code.fence_length != 0) { + container->as.code.fenced) { matched = 0; if (indent <= 3 && @@ -22,11 +22,12 @@ typedef struct { } cmark_list; typedef struct { + bool fenced; int fence_length; int fence_offset; unsigned char fence_char; cmark_strbuf info; -} cmark_fenced_code; +} cmark_code; typedef struct { int level; @@ -58,7 +59,7 @@ struct cmark_node { union { cmark_chunk literal; cmark_list list; - cmark_fenced_code code; + cmark_code code; cmark_header header; cmark_link link; } as; |