From: Fletcher T. Penney Date: Thu, 4 May 2017 20:37:14 +0000 (-0400) Subject: CHANGED: Don't strip list markers from nested list items X-Git-Tag: 6.0.6^2~14 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a6f5b9408d1ec72091eb2967fbde796b30f3217;p=multimarkdown CHANGED: Don't strip list markers from nested list items --- diff --git a/Sources/libMultiMarkdown/include/token.h b/Sources/libMultiMarkdown/include/token.h index 5f720b8..1421bd6 100644 --- a/Sources/libMultiMarkdown/include/token.h +++ b/Sources/libMultiMarkdown/include/token.h @@ -104,6 +104,11 @@ token * token_new( size_t len //!< Len of token ); +/// Duplicate an existing token +token * token_copy( + token * original //!< Token to be copied +); + /// Create a parent for a chain of tokens token * token_new_parent( token * child, //!< Pointer to child token chain diff --git a/Sources/libMultiMarkdown/mmd.c b/Sources/libMultiMarkdown/mmd.c index 6c16ddf..e4fe687 100644 --- a/Sources/libMultiMarkdown/mmd.c +++ b/Sources/libMultiMarkdown/mmd.c @@ -1459,6 +1459,8 @@ void pair_emphasis_tokens(token * t) { void recursive_parse_list_item(mmd_engine * e, token * block) { + token * marker = token_copy(block->child->child); + // Strip list marker from first line token_remove_first_child(block->child); @@ -1466,6 +1468,11 @@ void recursive_parse_list_item(mmd_engine * e, token * block) { deindent_block(e, block); mmd_parse_token_chain(e, block); + + // Insert marker back in place + marker->next = block->child->child; + block->child->child->prev = marker; + block->child->child = marker; }