git.iko.soy/typeable/pandoc
on master help sign in
Added stateWarnings to ParserState, added warning function.

This will be used to provide warnings for things like duplicate footnote refs and link refs.

commit5419b504cef0cc6e1a0f3e321b2fc0a66e12db3c authorJohn MacFarlane <fiddlosopher@gmail.com> dateFri 5 Oct 2012, 19:25 (14 years ago) parentf232034
1 file changed+8
src/Text/Pandoc/Parsing.hs+8
src/Text/Pandoc/Parsing.hs+8
@@ -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