regex-tdfa-0.94: Text/Regex/TDFA/Wrap.hs
{-# OPTIONS -fno-warn-orphans #-}
-- | "Text.Regex.TDFA.Wrap" provides the instance of RegexOptions and
-- the definition of (=~) and (=~~). This is all re-exported by
-- "Text.Regex.TDFA".
module Text.Regex.TDFA.Wrap(Regex(..),CompOption(..),ExecOption(..),(=~),(=~~)) where
{- By Chris Kuklewicz, 2007. BSD License, see the LICENSE file. -}
import Text.Regex.Base.RegexLike(RegexMaker(..),RegexOptions(..),RegexContext(..))
import Text.Regex.TDFA.Common(CompOption(..),ExecOption(..),Regex(..))
instance RegexOptions Regex CompOption ExecOption where
blankCompOpt = defaultCompOpt
blankExecOpt = defaultExecOpt
defaultCompOpt = CompOption { caseSensitive = True
, multiline = True
, rightAssoc = True
, lastStarGreedy = False
}
defaultExecOpt = ExecOption { captureGroups = True
, testMatch = False
}
setExecOpts e r = r {regex_execOptions=e}
getExecOpts r = regex_execOptions r
-- | This is the pure functional matching operator. If the target
-- cannot be produced then some empty result will be returned. If
-- there is an error in processing, then 'error' will be called.
(=~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target)
=> source1 -> source -> target
(=~) x r = let make :: RegexMaker Regex CompOption ExecOption a => a -> Regex
make = makeRegex
in match (make r) x
-- | This is the monadic matching operator. If a single match fails,
-- then 'fail' will be called.
(=~~) :: (RegexMaker Regex CompOption ExecOption source,RegexContext Regex source1 target,Monad m)
=> source1 -> source -> m target
(=~~) x r = do let make :: (RegexMaker Regex CompOption ExecOption a, Monad m) => a -> m Regex
make = makeRegexM
q <- make r
matchM q x