module Text.Regex.Do.Pcre.Matchf where
import Text.Regex.Do.Type.Do
import Text.Regex.Do.Type.Reexport as R
import Text.Regex.Do.Result as R
import Text.Regex.Base.RegexLike as R
import Text.Regex.Do.Type.MatchHint
type R_ b = R.RegexLike R.Regex b
class Matchf hint b where
type H hint
type P hint
marray_::R_ b => hint (Pattern R.Regex) -> Body b -> H hint
poslen_::R_ b => hint (Pattern R.Regex) -> Body b -> P hint
instance Matchf Once b where
type H Once = Maybe MatchArray
type P Once = Maybe [PosLen]
marray_ (Once (Pattern p0)) (Body b0) = R.matchOnce p0 b0
poslen_ r0 b0 = R.poslen $ marray_ r0 b0
instance Matchf All b where
type H All = [MatchArray]
type P All = [[PosLen]]
marray_ (All (Pattern p0)) (Body b0) = R.matchAll p0 b0
poslen_ r0 b0 = R.poslen $ marray_ r0 b0
once::(R_ b, R.Extract b) =>
Pattern R.Regex -> Body b -> [b]
once p0 b0 = maybe [] id $ R.allMatches b0 $ marray_ (Once p0) b0
all::(R_ b, R.Extract b) =>
Pattern R.Regex -> Body b -> [[b]]
all p0 b0 = R.allMatches b0 $ marray_ (All p0) b0