From 74ad1a04ad410785bed62c47367f3981217e19e7 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 6 May 2025 12:30:32 -0700 Subject: [PATCH] Make definition lists handle blank lines more like normal lists --- .../Commonmark/Extensions/DefinitionList.hs | 9 ++++-- .../test/definition_lists.md | 31 +++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/commonmark-extensions/src/Commonmark/Extensions/DefinitionList.hs b/commonmark-extensions/src/Commonmark/Extensions/DefinitionList.hs index 33b3902..e324452 100644 --- a/commonmark-extensions/src/Commonmark/Extensions/DefinitionList.hs +++ b/commonmark-extensions/src/Commonmark/Extensions/DefinitionList.hs @@ -160,10 +160,13 @@ definitionListDefinitionBlockSpec = BlockSpec , blockCanContain = const True , blockContainsLines = False , blockParagraph = False - , blockContinue = \node@(Node ndata _cs) -> do - pos <- getPosition + , blockContinue = \node@(Node ndata children) -> do let definitionIndent = fromDyn (blockData ndata) 0 - gobbleSpaces definitionIndent <|> 0 <$ lookAhead blankLine + -- a marker followed by two blanks is just an empty item: + pos <- getPosition + case blockBlanks ndata of + _:_ | null children -> lookAhead blankLine + _ -> () <$ gobbleSpaces definitionIndent <|> lookAhead blankLine return $! (pos, node) , blockConstructor = fmap mconcat . renderChildren , blockFinalize = defaultFinalizer diff --git a/commonmark-extensions/test/definition_lists.md b/commonmark-extensions/test/definition_lists.md index 2c91e6e..1144854 100644 --- a/commonmark-extensions/test/definition_lists.md +++ b/commonmark-extensions/test/definition_lists.md @@ -301,3 +301,34 @@ bim ```````````````````````````````` + + + One space + + + +HTML *Outside* a Definition List +: + +
+ Two Spaces +
+. +
+
HTML In a Definition List
+
+ One space +
+
+
HTML Outside a Definition List
+
+
+
+ Two Spaces +
+````````````````````````````````