diff options
-rw-r--r-- | src/Text/Pandoc/Readers/Textile.hs | 12 | ||||
-rw-r--r-- | test/command/3916.md | 11 |
2 files changed, 15 insertions, 8 deletions
diff --git a/src/Text/Pandoc/Readers/Textile.hs b/src/Text/Pandoc/Readers/Textile.hs index 853d2768f..9cd3d2c36 100644 --- a/src/Text/Pandoc/Readers/Textile.hs +++ b/src/Text/Pandoc/Readers/Textile.hs @@ -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 diff --git a/test/command/3916.md b/test/command/3916.md new file mode 100644 index 000000000..9ac0834d7 --- /dev/null +++ b/test/command/3916.md @@ -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"]]]] +``` |