@@ -745,13 +745,13 @@ htmlBlock' = try $ do
745745strictHtmlBlock :: Parser [Char] ParserState String
746746strictHtmlBlock = htmlInBalanced (not . isInlineTag)
747747
748−rawVerbatimBlock :: Parser [Char] ParserState (Tag String, String)
748+rawVerbatimBlock :: Parser [Char] ParserState String
749749rawVerbatimBlock = try $ do
750− (TagOpen tag as, open) <- htmlTag (tagOpen (\t ->
751− t == "pre" || t == "style" || t == "script")
752− (const True))
750+ (TagOpen tag _, open) <- htmlTag (tagOpen (\t ->
751+ t == "pre" || t == "style" || t == "script")
752+ (const True))
753753 contents <- manyTill anyChar (htmlTag (~== TagClose tag))
754− return (TagOpen tag as, open ++ contents ++ renderTags [TagClose tag])
754+ return $ open ++ contents ++ renderTags [TagClose tag]
755755
756756rawTeXBlock :: Parser [Char] ParserState (F Blocks)
757757rawTeXBlock = do
@@ -764,15 +764,23 @@ rawTeXBlock = do
764764rawHtmlBlocks :: Parser [Char] ParserState String
765765rawHtmlBlocks = do
766766 htmlBlocks <- many1 $ try $ do
767− (t,s) <- rawVerbatimBlock <|> htmlTag isBlockTag
768− exts <- getOption readerExtensions
769− -- if open tag, need markdown=1 if
770− -- markdown_attributes extension is set
771− when (Ext_markdown_attribute `Set.member` exts
772− && isTagOpen t) $ guard
773− $ case t of
774− TagOpen _ as -> "markdown" `elem` map fst as
775− _ -> False
767+ s <- rawVerbatimBlock <|> try (
768+ do (t,raw) <- htmlTag isBlockTag
769+ exts <- getOption readerExtensions
770+ -- if open tag, need markdown="1" if
771+ -- markdown_attributes extension is set
772+ case t of
773+ TagOpen _ as
774+ | Ext_markdown_attribute `Set.member`
775+ exts ->
776+ if "markdown" `notElem`
777+ map fst as
778+ then mzero
779+ else return $ substitute
780+ " markdown=\"1\"" "" raw
781+ | otherwise -> return raw
782+ _ -> return raw )
783+ -- TODO remove markdown="1" attribute from raw tags
776784 sps <- do sp1 <- many spaceChar
777785 sp2 <- option "" (blankline >> return "\n")
778786 sp3 <- many spaceChar