regex-do-3.0: src/Text/Regex/Do/Replace/Fast.hs
{- | simple (no regex) fast replace on 'B.ByteString's
All occurrences are replaced. There is no Once option
see 'S.replace' for detail -}
module Text.Regex.Do.Replace.Fast where
import qualified Data.ByteString.Search as S
import Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Text.Regex.Do.Match.Matchf
{- | >>> replace "\n" "," "a\nbc\nde"
"a,bc,de" -}
replace::ByteString -- ^ Pattern
-> ByteString -- ^ Replacement
-> ByteString -- ^ Body
-> ByteString
replace pat0
replacement0
body0 = B.concat . L.toChunks $ l
where l = S.replace pat1 replacement0 body0
!pat1 = checkPattern pat0