Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data ReplaceCase
- class Replace_cl a where
- replace :: Mr a => [ReplaceCase] -> (Needle a, Replacement a) -> Haystack a -> a
- replaceGroup :: Mr a => [ReplaceCase] -> (Needle a, GroupReplacer a) -> Haystack a -> a
- replaceMatch :: Replace_cl' a => PosLen -> (a, ReplaceAcc a) -> ReplaceAcc a
- defaultReplacer :: (Replace_cl' a, Extract a) => Int -> (a -> a) -> GroupReplacer a
- getGroup :: Extract a => ReplaceAcc a -> MatchArray -> Int -> Maybe a
- type Mr a = (Match_cl Regex a, Replace_cl' a, Match_opt a)
Documentation
data ReplaceCase Source
class Replace_cl a where Source
dynamic group replace
custom replacer fn returns replacement value
>>>
replacer::GroupReplacer String
replacer = defaultReplacer 1 tweak1 where tweak1 str1 = case str1 of "101" -> "[сто один]" "3" -> "[three]" otherwise -> trace str1 "?"
>>>
replaceGroup [Once,Utf8] (Needle "\\w=(\\d{1,3})", replacer) $ Haystack "a=101 b=3 12"
"a=[сто один] b=3 12"
>>>
replaceGroup [All,Utf8] (Needle "\\w=(\\d{1,3})", replacer) $ Haystack "a=101 b=3 12"
"a=[сто один] b=[three] 12"
static replace for simple (no group) needle
>>>
replace [Once,Utf8] (Needle "менее", Replacement "более") $ Haystack "менее менее"
"более менее"
>>>
replace [Once,Utf8] (Needle "^a\\s", Replacement "A") $ Haystack "a bc хол.гор."
"Abc хол.гор."
Nothing
replace :: Mr a => [ReplaceCase] -> (Needle a, Replacement a) -> Haystack a -> a Source
replaceGroup :: Mr a => [ReplaceCase] -> (Needle a, GroupReplacer a) -> Haystack a -> a Source
:: Replace_cl' a | |
=> PosLen | replaced |
-> (a, ReplaceAcc a) | (new val, acc passed to |
-> ReplaceAcc a | new acc |
call from your custom GroupReplacer
passed to replaceGroup
see example replacer above
:: (Replace_cl' a, Extract a) | |
=> Int | group idx |
-> (a -> a) | (group match -> replacement) tweak |
-> GroupReplacer a |
you can write a custom replacer. This is only one common use case.
Replaces specified (by idx) group match with tweaked value.
getGroup :: Extract a => ReplaceAcc a -> MatchArray -> Int -> Maybe a Source
get group content safely
call from your custom GroupReplacer
passed to replaceGroup