module Text.Regex.Do.Type.Regex_ where
import qualified Text.Regex.Base.RegexLike as R
import Text.Regex.Do.Type.Reexport
import Data.ByteString
import Text.Regex.Do.Type.Do
import Text.Regex.Do.Pcre.Option
class Regex_ a where
r_::Pattern a -> Regex
ropt_::Pattern a -> [Comp] -> [Exec] -> Regex
instance Regex_ ByteString where
r_ (Pattern p0) = R.makeRegex p0
ropt_ = makeRegexOpts
instance Regex_ String where
r_ (Pattern p0) = R.makeRegex p0
ropt_ = makeRegexOpts
instance Regex_ Regex where
r_ (Pattern p0) = p0
ropt_ (Pattern p0) _ _ = p0
type Rx_ a b = (Regex_ a, R.Extract b, R.RegexLike Regex b)
type Opt_ a = R.RegexMaker Regex CompOption ExecOption a
makeRegexOpts::Opt_ a =>
Pattern a ->
[Comp] -> [Exec] ->
Regex
makeRegexOpts (Pattern pat0) comp0 exec0 = rx1
where c1 = comp comp0
e1 = exec exec0
rx1 = R.makeRegexOpts c1 e1 pat0