git.iko.soy/typeable/pandoc
on master help sign in
HTML reader: Added warnings for ignored material.

See #3392.

commita84a360f7a8dbd8da180ca46faaa7dfae025149d authorJohn MacFarlane <jgm@berkeley.edu> dateFri 10 Feb 2017, 08:17 (10 years ago) parent87507e1
1 file changed+14−5
src/Text/Pandoc/Readers/HTML.hs+14−5
src/Text/Pandoc/Readers/HTML.hs+14−5
@@ -68,10 +68,9 @@ import Data.Monoid ((<>))
6868import Text.Parsec.Error
6969import qualified Data.Set as Set
7070import Text.Pandoc.Error
71−import Text.Pandoc.Class (PandocMonad, report)
71+import Text.Pandoc.Class (PandocMonad, report, warningWithPos)
7272import Control.Monad.Except (throwError)
7373
74−
7574-- | Convert HTML-formatted string to 'Pandoc' document.
7675readHtml :: PandocMonad m
7776 => ReaderOptions -- ^ Reader options
@@ -370,7 +369,16 @@ pRawHtmlBlock = do
370369 exts <- getOption readerExtensions
371370 if extensionEnabled Ext_raw_html exts && not (null raw)
372371 then return $ B.rawBlock "html" raw
373− else return mempty
372+ else ignore raw
373+
374+ignore :: (Monoid a, PandocMonad m) => String -> TagParser m a
375+ignore raw = do
376+ pos <- getPosition
377+ -- raw can be null for tags like <!DOCTYPE>; see paRawTag
378+ -- in this case we don't want a warning:
379+ unless (null raw) $
380+ warningWithPos pos $ "Skipped " ++ raw
381+ return mempty
374382
375383pHtmlBlock :: PandocMonad m => String -> TagParser m String
376384pHtmlBlock t = try $ do
@@ -691,9 +699,10 @@ pRawHtmlInline = do
691699 then pSatisfy (not . isBlockTag)
692700 else pSatisfy isInlineTag
693701 exts <- getOption readerExtensions
702+ let raw = renderTags' [result]
694703 if extensionEnabled Ext_raw_html exts
695− then return $ B.rawInline "html" $ renderTags' [result]
696− else return mempty
704+ then return $ B.rawInline "html" raw
705+ else ignore raw
697706
698707mathMLToTeXMath :: String -> Either String String
699708mathMLToTeXMath s = writeTeX <$> readMathML s