Added stateWarnings to ParserState, added warning function.

This will be used to provide warnings for things like duplicate
footnote refs and link refs.
This commit is contained in:
John MacFarlane 2012-10-05 19:25:26 -07:00
parent f232034ab0
commit 5419b504ce

View file

@ -62,6 +62,7 @@ module Text.Pandoc.Parsing ( (>>~),
getOption,
guardEnabled,
guardDisabled,
warning,
ParserState (..),
defaultParserState,
HeaderType (..),
@ -725,6 +726,7 @@ data ParserState = ParserState
stateExamples :: M.Map String Int, -- ^ Map from example labels to numbers
stateHasChapters :: Bool, -- ^ True if \chapter encountered
stateMacros :: [Macro], -- ^ List of macros defined so far
stateWarnings :: [(SourcePos, String)], -- ^ List of warnings
stateRstDefaultRole :: String -- ^ Current rST default interpreted text role
}
@ -751,11 +753,17 @@ defaultParserState =
stateExamples = M.empty,
stateHasChapters = False,
stateMacros = [],
stateWarnings = [],
stateRstDefaultRole = "title-reference"}
getOption :: (ReaderOptions -> a) -> Parser s ParserState a
getOption f = (f . stateOptions) `fmap` getState
warning :: String -> Parser s ParserState ()
warning msg = do
pos <- getPosition
modifyState $ \st -> st{ stateWarnings = stateWarnings st ++ [(pos,msg)] }
-- | Succeed only if the extension is enabled.
guardEnabled :: Extension -> Parser s ParserState ()
guardEnabled ext = getOption readerExtensions >>= guard . Set.member ext