git.iko.soy/typeable/pandoc
on master help sign in
Factor out "returnState" into Parsing module
commit4ce6471c12d779699588deb30344aa2bfe62fd41 authorMatthew Pickering <matthewtpickering@gmail.com> dateMon 2 Feb 2015, 10:38 (12 years ago) parent9e150dd
3 files changed+7−16
src/Text/Pandoc/Parsing.hs+5 src/Text/Pandoc/Readers/Markdown.hs+1−8 src/Text/Pandoc/Readers/Org.hs+1−8
src/Text/Pandoc/Parsing.hs+5
@@ -66,6 +66,7 @@ module Text.Pandoc.Parsing ( anyLine,
6666 gridTableWith,
6767 readWith,
6868 returnWarnings,
69+ returnState,
6970 readWithM,
7071 testStringWith,
7172 guardEnabled,
@@ -873,6 +874,10 @@ returnWarnings p = do
873874 warnings <- stateWarnings <$> getState
874875 return (doc, warnings)
875876
877+-- | Return the final internal state with the result of a parser
878+returnState :: (Stream s m c) => ParsecT s st m a -> ParsecT s st m (a, st)
879+returnState p = (,) <$> p <*> getState
880+
876881-- | Parse a string with @parser@ (for testing).
877882testStringWith :: (Show a, Stream [Char] Identity Char)
878883 => ParserT [Char] ParserState Identity a
src/Text/Pandoc/Readers/Markdown.hs+1−8
@@ -81,17 +81,10 @@ readMarkdownWithWarnings :: ReaderOptions -- ^ Reader options
8181 -> (Pandoc, [String])
8282readMarkdownWithWarnings opts s = runMarkdown opts s (returnWarnings parseMarkdown)
8383
84−
85−retState :: MarkdownParser a -> MarkdownParser (a, ParserState)
86−retState p = do
87− r <- p
88− s <- getState
89− return (r, s)
90−
9184runMarkdown :: ReaderOptions -> String -> MarkdownParser a -> a
9285runMarkdown opts inp p = fst res
9386 where
94− imd = readWithM (retState p) def{ stateOptions = opts } (inp ++ "\n\n")
87+ imd = readWithM (returnState p) def{ stateOptions = opts } (inp ++ "\n\n")
9588 res = runReader imd s
9689 s :: ParserState
9790 s = snd $ runReader imd s
src/Text/Pandoc/Readers/Org.hs+1−8
@@ -74,18 +74,11 @@ type OrgParser = ParserT [Char] OrgParserState (Reader OrgParserLocal)
7474runOrg :: ReaderOptions -> String -> OrgParser a -> a
7575runOrg opts inp p = fst res
7676 where
77− imd = readWithM (retState p) def{ orgStateOptions = opts } (inp ++ "\n\n")
77+ imd = readWithM (returnState p) def{ orgStateOptions = opts } (inp ++ "\n\n")
7878 res = runReader imd def { finalState = s }
7979 s :: OrgParserState
8080 s = snd $ runReader imd (def { finalState = s })
8181
82−retState :: OrgParser a -> OrgParser (a, OrgParserState)
83−retState p = do
84− r <- p
85− s <- getState
86− return (r, s)
87−
88−
8982parseOrg :: OrgParser Pandoc
9083parseOrg = do
9184 blocks' <- parseBlocks