diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-12-12 22:12:09 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-12-12 22:55:11 -0800 |
commit | c41bf11bb38ef513fa53f88b2c80afd1504aaeaf (patch) | |
tree | 87447007f83e40b627037e15108576113dc020c9 /src/node.c | |
parent | 5c20df20af6be9444f27a8c1bbfa5b027a1fa8d8 (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.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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; |