summaryrefslogtreecommitdiff
path: root/src/node.c
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2014-12-12 22:12:09 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2014-12-12 22:55:11 -0800
commitc41bf11bb38ef513fa53f88b2c80afd1504aaeaf (patch)
tree87447007f83e40b627037e15108576113dc020c9 /src/node.c
parent5c20df20af6be9444f27a8c1bbfa5b027a1fa8d8 (diff)
Rewrote HTML renderer using cmark_walk.
This version is shorter, more readable, and more regular. It should serve as a template for creating new writers. Performance is the same. All tests pass.
Diffstat (limited to 'src/node.c')
-rw-r--r--src/node.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/node.c b/src/node.c
index 040aeda..980229e 100644
--- a/src/node.c
+++ b/src/node.c
@@ -773,6 +773,7 @@ int S_is_leaf_node(cmark_node *current_node)
switch (cmark_node_get_type(current_node)) {
case CMARK_NODE_HTML:
case CMARK_NODE_HRULE:
+ case CMARK_NODE_CODE_BLOCK:
case CMARK_NODE_REFERENCE_DEF:
case CMARK_NODE_TEXT:
case CMARK_NODE_SOFTBREAK:
@@ -815,8 +816,13 @@ int cmark_walk(cmark_node *root, cmark_node_handler handler, void *state)
parent = current_node->parent;
}
if (next) {
- begin = 1;
- current_node = next;
+ // don't go past root:
+ if (current_node == root) {
+ return 1;
+ } else {
+ begin = 1;
+ current_node = next;
+ }
} else {
begin = 0;
depth -= 1;