Markdown reader: make sure fenced div closers work in lists.
Previously the following failed: ::: {.class} 1. one 2. two ::: and you needed a blank line before the closing `:::`.
This commit is contained in:
parent
81610144f9
commit
556c6c2c6d
3 changed files with 12 additions and 5 deletions
|
@ -846,6 +846,7 @@ listLine continuationIndent = try $ do
|
|||
skipMany spaceChar
|
||||
listStart)
|
||||
notFollowedByHtmlCloser
|
||||
notFollowedByDivCloser
|
||||
optional (() <$ gobbleSpaces continuationIndent)
|
||||
listLineCommon
|
||||
|
||||
|
@ -883,16 +884,24 @@ listContinuation continuationIndent = try $ do
|
|||
x <- try $ do
|
||||
notFollowedBy blankline
|
||||
notFollowedByHtmlCloser
|
||||
notFollowedByDivCloser
|
||||
gobbleSpaces continuationIndent
|
||||
anyLineNewline
|
||||
xs <- many $ try $ do
|
||||
notFollowedBy blankline
|
||||
notFollowedByHtmlCloser
|
||||
notFollowedByDivCloser
|
||||
gobbleSpaces continuationIndent <|> notFollowedBy' listStart
|
||||
anyLineNewline
|
||||
blanks <- many blankline
|
||||
return $ concat (x:xs) ++ blanks
|
||||
|
||||
notFollowedByDivCloser :: PandocMonad m => MarkdownParser m ()
|
||||
notFollowedByDivCloser = do
|
||||
guardDisabled Ext_fenced_divs <|>
|
||||
do divLevel <- stateFencedDivLevel <$> getState
|
||||
guard (divLevel < 1) <|> notFollowedBy divFenceEnd
|
||||
|
||||
notFollowedByHtmlCloser :: PandocMonad m => MarkdownParser m ()
|
||||
notFollowedByHtmlCloser = do
|
||||
inHtmlBlock <- stateInHtmlBlock <$> getState
|
||||
|
@ -965,6 +974,7 @@ defRawBlock compact = try $ do
|
|||
let dline = try
|
||||
( do notFollowedBy blankline
|
||||
notFollowedByHtmlCloser
|
||||
notFollowedByDivCloser
|
||||
if compact -- laziness not compatible with compact
|
||||
then () <$ indentSpaces
|
||||
else (() <$ indentSpaces)
|
||||
|
@ -1688,10 +1698,8 @@ endline = try $ do
|
|||
guardEnabled Ext_blank_before_header <|> (notFollowedBy . char =<< atxChar) -- atx header
|
||||
guardDisabled Ext_backtick_code_blocks <|>
|
||||
notFollowedBy (() <$ (lookAhead (char '`') >> codeBlockFenced))
|
||||
guardDisabled Ext_fenced_divs <|>
|
||||
do divLevel <- stateFencedDivLevel <$> getState
|
||||
guard (divLevel < 1) <|> notFollowedBy divFenceEnd
|
||||
notFollowedByHtmlCloser
|
||||
notFollowedByDivCloser
|
||||
(eof >> return mempty)
|
||||
<|> (guardEnabled Ext_hard_line_breaks >> return (return B.linebreak))
|
||||
<|> (guardEnabled Ext_ignore_line_breaks >> return mempty)
|
||||
|
|
|
@ -402,7 +402,7 @@ blockToMarkdown' opts (Div attrs ils) = do
|
|||
_ | isEnabled Ext_fenced_divs opts &&
|
||||
attrs /= nullAttr ->
|
||||
nowrap (text ":::" <+> attrsToMarkdown attrs) $$
|
||||
contents $$
|
||||
chomp contents $$
|
||||
text ":::" <> blankline
|
||||
| isEnabled Ext_native_divs opts ||
|
||||
(isEnabled Ext_raw_html opts &&
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
|
||||
- ::: {#id}
|
||||
bar
|
||||
|
||||
:::
|
||||
|
||||
- baz
|
||||
|
|
Loading…
Add table
Reference in a new issue