Textile reader: allow 'pre' code in list item.

Closes #3916.
This commit is contained in:
John MacFarlane 2017-09-12 08:58:47 -07:00
parent 2e2795412d
commit 4177ee8626
2 changed files with 15 additions and 8 deletions

View file

@ -178,7 +178,6 @@ codeBlockPre :: PandocMonad m => ParserT [Char] ParserState m Blocks
codeBlockPre = try $ do
(t@(TagOpen _ attrs),_) <- htmlTag (tagOpen (=="pre") (const True))
result' <- manyTill anyChar (htmlTag (tagClose (=="pre")))
optional blanklines
-- drop leading newline if any
let result'' = case result' of
'\n':xs -> xs
@ -262,10 +261,11 @@ orderedListItemAtDepth = genericListItemAtDepth '#'
genericListItemAtDepth :: PandocMonad m => Char -> Int -> ParserT [Char] ParserState m Blocks
genericListItemAtDepth c depth = try $ do
count depth (char c) >> attributes >> whitespace
p <- mconcat <$> many listInline
contents <- mconcat <$> many ((B.plain . mconcat <$> many1 inline) <|>
try (newline >> codeBlockPre))
newline
sublist <- option mempty (anyListAtDepth (depth + 1))
return $ (B.plain p) <> sublist
return $ contents <> sublist
-- | A definition list is a set of consecutive definition items
definitionList :: PandocMonad m => ParserT [Char] ParserState m Blocks
@ -295,10 +295,6 @@ definitionListStart = try $ do
<|> try (lookAhead (() <$ string ":="))
)
listInline :: PandocMonad m => ParserT [Char] ParserState m Inlines
listInline = try (notFollowedBy newline >> inline)
<|> try (endline <* notFollowedBy listStart)
-- | A definition list item in textile begins with '- ', followed by
-- the term defined, then spaces and ":=". The definition follows, on
-- the same single line, or spaned on multiple line, after a line
@ -310,7 +306,7 @@ definitionListItem = try $ do
return (term, def')
where inlineDef :: PandocMonad m => ParserT [Char] ParserState m [Blocks]
inlineDef = liftM (\d -> [B.plain d])
$ optional whitespace >> (trimInlines . mconcat <$> many listInline) <* newline
$ optional whitespace >> (trimInlines . mconcat <$> many inline) <* newline
multilineDef :: PandocMonad m => ParserT [Char] ParserState m [Blocks]
multilineDef = try $ do
optional whitespace >> newline

11
test/command/3916.md Normal file
View file

@ -0,0 +1,11 @@
```
% pandoc -f textile -t native
# text text
<pre>blabla</pre>
# more
^D
[OrderedList (1,DefaultStyle,DefaultDelim)
[[Plain [Str "text",Space,Str "text"]
,CodeBlock ("",[],[]) "blabla"]
,[Plain [Str "more"]]]]
```