@@ -89,7 +89,7 @@ readHtml opts inp = do
8989 result <- flip runReaderT def $
9090 runParserT parseDoc
9191 (HTMLState def{ stateOptions = opts }
92− [] Nothing Set.empty [] M.empty)
92+ [] Nothing Set.empty [] M.empty opts)
9393 "source" tags
9494 case result of
9595 Right doc -> return doc
@@ -112,7 +112,8 @@ data HTMLState =
112112 baseHref :: Maybe URI,
113113 identifiers :: Set.Set Text,
114114 logMessages :: [LogMessage],
115− macros :: M.Map Text Macro
115+ macros :: M.Map Text Macro,
116+ readerOpts :: ReaderOptions
116117 }
117118
118119data HTMLLocal = HTMLLocal { quoteContext :: QuoteContext
@@ -185,6 +186,7 @@ block = do
185186 , pDiv
186187 , pPlain
187188 , pFigure
189+ , pIframe
188190 , pRawHtmlBlock
189191 ]
190192 trace (T.take 60 $ tshow $ B.toList res)
@@ -401,6 +403,18 @@ pDiv = try $ do
401403 else kvs
402404 return $ B.divWith (ident, classes', kvs') contents
403405
406+pIframe :: PandocMonad m => TagParser m Blocks
407+pIframe = try $ do
408+ guardDisabled Ext_raw_html
409+ tag <- pSatisfy (tagOpen (=="iframe") (isJust . lookup "src"))
410+ pCloses "iframe" <|> eof
411+ url <- canonicalizeUrl $ fromAttrib "src" tag
412+ (bs, _) <- openURL url
413+ let inp = UTF8.toText bs
414+ opts <- readerOpts <$> getState
415+ Pandoc _ contents <- readHtml opts inp
416+ return $ B.divWith ("",["iframe"],[]) $ B.fromList contents
417+
404418pRawHtmlBlock :: PandocMonad m => TagParser m Blocks
405419pRawHtmlBlock = do
406420 raw <- pHtmlBlock "script" <|> pHtmlBlock "style" <|> pHtmlBlock "textarea"
@@ -798,9 +812,8 @@ pImage = do
798812
799813pSvg :: PandocMonad m => TagParser m Inlines
800814pSvg = do
801− exts <- getOption readerExtensions
815+ guardDisabled Ext_raw_html
802816 -- if raw_html enabled, parse svg tag as raw
803− guard $ not (extensionEnabled Ext_raw_html exts)
804817 opent@(TagOpen _ attr') <- pSatisfy (matchTagOpen "svg" [])
805818 let (ident,cls,_) = toAttr attr'
806819 contents <- many (notFollowedBy (pCloses "svg") >> pAny)