]> granicus.if.org Git - multimarkdown/commitdiff
CHANGED: Don't strip list markers from nested list items
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Thu, 4 May 2017 20:37:14 +0000 (16:37 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Thu, 4 May 2017 20:37:14 +0000 (16:37 -0400)
Sources/libMultiMarkdown/include/token.h
Sources/libMultiMarkdown/mmd.c

index 5f720b86e9bc30a1919f2e53dd448a8bd0f8976f..1421bd6528b30de541f1fce1c0441babe79c0205 100644 (file)
@@ -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
index 6c16ddfb8e8c7997e2ab6313e4313e58de8962c6..e4fe6871ca8f45e2727827cc4bcb62a69ab6d825 100644 (file)
@@ -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;
 }