@@ -107,7 +107,7 @@ pBulletList = try $ do
107 -- treat it as a list item, though it's not valid xhtml...
107 -- treat it as a list item, though it's not valid xhtml...
108 skipMany nonItem
108 skipMany nonItem
109 items <- manyTill (pInTags "li" block >>~ skipMany nonItem) (pCloses "ul")
109 items <- manyTill (pInTags "li" block >>~ skipMany nonItem) (pCloses "ul")
110− return [BulletList items]
110+ return [BulletList $ map fixPlains items]
112pOrderedList :: TagParser [Block]
112pOrderedList :: TagParser [Block]
113pOrderedList = try $ do
113pOrderedList = try $ do
@@ -138,7 +138,7 @@ pOrderedList = try $ do
138 -- treat it as a list item, though it's not valid xhtml...
138 -- treat it as a list item, though it's not valid xhtml...
139 skipMany nonItem
139 skipMany nonItem
140 items <- manyTill (pInTags "li" block >>~ skipMany nonItem) (pCloses "ol")
140 items <- manyTill (pInTags "li" block >>~ skipMany nonItem) (pCloses "ol")
141− return [OrderedList (start, style, DefaultDelim) items]
141+ return [OrderedList (start, style, DefaultDelim) $ map fixPlains items]
143pDefinitionList :: TagParser [Block]
143pDefinitionList :: TagParser [Block]
144pDefinitionList = try $ do
144pDefinitionList = try $ do
@@ -154,7 +154,19 @@ pDefListItem = try $ do
154 defs <- many1 (try $ skipMany nonItem >> pInTags "dd" block)
154 defs <- many1 (try $ skipMany nonItem >> pInTags "dd" block)
155 skipMany nonItem
155 skipMany nonItem
156 let term = intercalate [LineBreak] terms
156 let term = intercalate [LineBreak] terms
157− return (term, defs)
157+ return (term, map fixPlains defs)
159+fixPlains :: [Block] -> [Block]
160+fixPlains bs = if any isParaish bs
161+ then map plainToPara bs
163+ where isParaish (Para _) = True
164+ isParaish (CodeBlock _ _) = True
165+ isParaish (Header _ _) = True
166+ isParaish (BlockQuote _) = True
168+ plainToPara (Plain xs) = Para xs
159pRawTag :: TagParser String
171pRawTag :: TagParser String
160pRawTag = do
172pRawTag = do
@@ -358,7 +370,7 @@ pInlinesInTags :: String -> ([Inline] -> Inline)
358 -> TagParser [Inline]
370 -> TagParser [Inline]
359pInlinesInTags tagtype f = do
371pInlinesInTags tagtype f = do
360 contents <- pInTags tagtype inline
372 contents <- pInTags tagtype inline
361− return [f contents]
373+ return [f $ normalizeSpaces contents]
363pInTags :: String -> TagParser [a]
375pInTags :: String -> TagParser [a]
364 -> TagParser [a]
376 -> TagParser [a]