diff options
| -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;  | 
