git.iko.soy/typeable/pandoc
on master help sign in
HTML reader: Added warnings for ignored material.
a84a360John MacFarlane
src/Text/Pandoc/Readers/HTML.hs+14−5
@@ -68,10 +68,9 @@ import Data.Monoid ((<>))
68import Text.Parsec.Error
68import Text.Parsec.Error
69import qualified Data.Set as Set
69import qualified Data.Set as Set
70import Text.Pandoc.Error
70import Text.Pandoc.Error
71−import Text.Pandoc.Class (PandocMonad, report)
71+import Text.Pandoc.Class (PandocMonad, report, warningWithPos)
72import Control.Monad.Except (throwError)
72import Control.Monad.Except (throwError)
73
73
74−
75-- | Convert HTML-formatted string to 'Pandoc' document.
74-- | Convert HTML-formatted string to 'Pandoc' document.
76readHtml :: PandocMonad m
75readHtml :: PandocMonad m
77 => ReaderOptions -- ^ Reader options
76 => ReaderOptions -- ^ Reader options
@@ -370,7 +369,16 @@ pRawHtmlBlock = do
370 exts <- getOption readerExtensions
369 exts <- getOption readerExtensions
371 if extensionEnabled Ext_raw_html exts && not (null raw)
370 if extensionEnabled Ext_raw_html exts && not (null raw)
372 then return $ B.rawBlock "html" raw
371 then return $ B.rawBlock "html" raw
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
373− else return mempty
381+ return mempty
374
382
375pHtmlBlock :: PandocMonad m => String -> TagParser m String
383pHtmlBlock :: PandocMonad m => String -> TagParser m String
376pHtmlBlock t = try $ do
384pHtmlBlock t = try $ do
@@ -691,9 +699,10 @@ pRawHtmlInline = do
691 then pSatisfy (not . isBlockTag)
699 then pSatisfy (not . isBlockTag)
692 else pSatisfy isInlineTag
700 else pSatisfy isInlineTag
693 exts <- getOption readerExtensions
701 exts <- getOption readerExtensions
702+ let raw = renderTags' [result]
694 if extensionEnabled Ext_raw_html exts
703 if extensionEnabled Ext_raw_html exts
695− then return $ B.rawInline "html" $ renderTags' [result]
704+ then return $ B.rawInline "html" raw
696− else return mempty
705+ else ignore raw
697
706
698mathMLToTeXMath :: String -> Either String String
707mathMLToTeXMath :: String -> Either String String
699mathMLToTeXMath s = writeTeX <$> readMathML s
708mathMLToTeXMath s = writeTeX <$> readMathML s