Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data ReplaceCase
- class Replace a where
- replace :: Mr_ a => [ReplaceCase] -> Pattern a -> Replacement a -> Body a -> a
- replaceGroup :: Mr_ a => [ReplaceCase] -> Pattern a -> GroupReplacer a -> Body a -> a
- replaceMatch :: Replace_ a => PosLen -> (a, ReplaceAcc a) -> ReplaceAcc a
- defaultReplacer :: (Replace_ a, Extract a) => Int -> (a -> a) -> GroupReplacer a
- getGroup :: Extract a => ReplaceAcc a -> MatchArray -> Int -> Maybe a
- type Mr_ a = (Match Regex a, Replace_ a, Opt_ a)
Documentation
data ReplaceCase 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] (Pattern "\\w=(\\d{1,3})", replacer) $ Body "a=101 b=3 12"
"a=[сто один] b=3 12"
>>>
replaceGroup [All,Utf8] (Pattern "\\w=(\\d{1,3})", replacer) $ Body "a=101 b=3 12"
"a=[сто один] b=[three] 12"
static replace for simple (no group) needle
>>>
replace [Once,Utf8] (Pattern "менее", Replacement "более") $ Body "менее менее"
"более менее"
>>>
replace [Once,Utf8] (Pattern "^a\\s", Replacement "A") $ Body "a bc хол.гор."
"Abc хол.гор."
Nothing
replace :: Mr_ a => [ReplaceCase] -> Pattern a -> Replacement a -> Body a -> a Source
replaceGroup :: Mr_ a => [ReplaceCase] -> Pattern a -> GroupReplacer a -> Body a -> a Source
:: Replace_ a | |
=> PosLen | replaceable, unadjusted |
-> (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_ 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