From a3030f985a973b3b835645313fdad1a8a72ff432 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 13 Dec 2014 14:13:58 -0800 Subject: Added iterator interface to API, removed cmark_walk. * Added `iterator.c`, `iterator.h`. * Removed `cmark_walk`. * Replaced `cmark_walk` with iterator in HTML renderer. * Replaced API test for `cmark_walk` with simple iterator test. --- api_test/main.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'api_test') diff --git a/api_test/main.c b/api_test/main.c index c975060..42cc70d 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -293,27 +293,24 @@ node_check(test_batch_runner *runner) { cmark_node_free(doc); } -static int -S_handler(cmark_node *node, cmark_event_type ev_type, void *state) -{ - int *textnodes = state; - if (ev_type == CMARK_EVENT_ENTER) { - if (node->type == CMARK_NODE_TEXT) { - *textnodes += 1; - } - } - return 1; -} - static void -walk(test_batch_runner *runner) { - // Construct an incomplete tree. +iterator(test_batch_runner *runner) { cmark_node *doc = cmark_parse_document("> a *b*\n\nc", 10); - int textnodes = 0; - INT_EQ(runner, cmark_walk(doc, S_handler, &textnodes), 1, - "walk succeeds"); - INT_EQ(runner, textnodes, 3, "walk correctly counts text nodes"); + int parnodes = 0; + cmark_event_type ev_type; + cmark_iter *iter = cmark_iter_new(doc); + cmark_node *cur; + + while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) { + cur = cmark_iter_get_node(iter); + if (cur->type == CMARK_NODE_PARAGRAPH && + ev_type == CMARK_EVENT_ENTER) { + parnodes += 1; + } + } + INT_EQ(runner, parnodes, 2, "iterate correctly counts paragraphs"); + cmark_iter_free(iter); cmark_node_free(doc); } @@ -627,7 +624,7 @@ int main() { constructor(runner); accessors(runner); node_check(runner); - walk(runner); + iterator(runner); create_tree(runner); hierarchy(runner); parser(runner); -- cgit v1.2.3