{-# LANGUAGE RecordWildCards            #-}

module Text.RE.SearchReplace
  (
  -- * Serach and Replace
    SearchReplace(..)
  , searchReplaceFirst
  , searchReplaceAll
  ) where

import           Text.RE.Types.IsRegex
import           Text.RE.Types.Replace
import           Text.RE.Types.SearchReplace


-- | searching and replacing the first occurrence
searchReplaceAll :: IsRegex re s => SearchReplace re s -> s -> s
searchReplaceAll SearchReplace{..} = replaceAll getTemplate . matchMany getSearch

-- | searching and replaceing all occurrences
searchReplaceFirst :: IsRegex re s => SearchReplace re s -> s -> s
searchReplaceFirst SearchReplace{..} = replace    getTemplate . matchOnce getSearch