{- |  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