git.iko.soy/typeable/pandoc
on master help sign in
Parsing: Added guardEnabled, guardDisabled.
commit5186da929ddda15ef28926169b1eae87e699ed50 authorJohn MacFarlane <fiddlosopher@gmail.com> dateThu 26 Jul 2012, 19:10 (14 years ago) parent631e5c1
1 file changed+14−3
src/Text/Pandoc/Parsing.hs+14−3
src/Text/Pandoc/Parsing.hs+14−3
@@ -60,8 +60,10 @@ module Text.Pandoc.Parsing ( (>>~),
6060 gridTableWith,
6161 readWith,
6262 testStringWith,
63− ParserState (..),
6463 getOption,
64+ guardEnabled,
65+ guardDisabled,
66+ ParserState (..),
6567 defaultParserState,
6668 HeaderType (..),
6769 ParserContext (..),
@@ -75,8 +77,8 @@ module Text.Pandoc.Parsing ( (>>~),
7577 smartPunctuation,
7678 macro,
7779 applyMacros',
78− -- * Re-exports from Text.Pandoc.Parsec
7980 Parser,
81+ -- * Re-exports from Text.Pandoc.Parsec
8082 runParser,
8183 parse,
8284 anyToken,
@@ -144,6 +146,7 @@ import qualified Data.Map as M
144146import Text.TeXMath.Macros (applyMacros, Macro, parseMacroDefinitions)
145147import Text.HTML.TagSoup.Entity ( lookupEntity )
146148import Data.Default
149+import qualified Data.Set as Set
147150
148151type Parser t s = Parsec t s
149152
@@ -728,9 +731,17 @@ defaultParserState =
728731 stateMacros = [],
729732 stateRstDefaultRole = "title-reference"}
730733
731−getOption :: (ReaderOptions -> a) -> Parser [t] ParserState a
734+getOption :: (ReaderOptions -> a) -> Parser s ParserState a
732735getOption f = (f . stateOptions) `fmap` getState
733736
737+-- | Succeed only if the extension is enabled.
738+guardEnabled :: Extension -> Parser s ParserState ()
739+guardEnabled ext = getOption readerExtensions >>= guard . Set.member ext
740+
741+-- | Succeed only if the extension is disabled.
742+guardDisabled :: Extension -> Parser s ParserState ()
743+guardDisabled ext = getOption readerExtensions >>= guard . not . Set.member ext
744+
734745data HeaderType
735746 = SingleHeader Char -- ^ Single line of characters underneath
736747 | DoubleHeader Char -- ^ Lines of characters above and below