@@ -62,6 +62,7 @@ module Text.Pandoc.Parsing ( (>>~),
6262 getOption,
6363 guardEnabled,
6464 guardDisabled,
65+ warning,
6566 ParserState (..),
6667 defaultParserState,
6768 HeaderType (..),
@@ -725,6 +726,7 @@ data ParserState = ParserState
725726 stateExamples :: M.Map String Int, -- ^ Map from example labels to numbers
726727 stateHasChapters :: Bool, -- ^ True if \chapter encountered
727728 stateMacros :: [Macro], -- ^ List of macros defined so far
729+ stateWarnings :: [(SourcePos, String)], -- ^ List of warnings
728730 stateRstDefaultRole :: String -- ^ Current rST default interpreted text role
729731 }
730732
@@ -751,11 +753,17 @@ defaultParserState =
751753 stateExamples = M.empty,
752754 stateHasChapters = False,
753755 stateMacros = [],
756+ stateWarnings = [],
754757 stateRstDefaultRole = "title-reference"}
755758
756759getOption :: (ReaderOptions -> a) -> Parser s ParserState a
757760getOption f = (f . stateOptions) `fmap` getState
758761
762+warning :: String -> Parser s ParserState ()
763+warning msg = do
764+ pos <- getPosition
765+ modifyState $ \st -> st{ stateWarnings = stateWarnings st ++ [(pos,msg)] }
766+
759767-- | Succeed only if the extension is enabled.
760768guardEnabled :: Extension -> Parser s ParserState ()
761769guardEnabled ext = getOption readerExtensions >>= guard . Set.member ext