module Text.Regex.Do.TypeDo where
import Text.Regex.Base.RegexLike as R
import Text.Regex.Do.TypeRegex
import Data.ByteString
type GroupReplacer a = (MatchArray -> ReplaceAcc a -> ReplaceAcc a)
data ReplaceAcc a = ReplaceAcc {
acc::a,
pos_adj::Int
}
data Pattern n = Pattern n deriving (Functor)
data Body h = Body h deriving (Functor)
data Replacement r = Replacement r deriving (Functor)
type PosLen = (MatchOffset, MatchLength)
data ReplaceCase = Once
| All
| Utf8
| Multiline deriving Eq
type Opt_ n = R.RegexMaker Regex CompOption ExecOption n
type Rx_ n h = (R.Extract h, Regex_ n, R.RegexLike Regex h)
class Regex_ r where
r_::Pattern r -> Regex
instance Regex_ ByteString where
r_ (Pattern r0) = R.makeRegex r0
instance Regex_ String where
r_ (Pattern r0) = R.makeRegex r0
instance Regex_ Regex where
r_ (Pattern r0) = r0