regex-do-3.0: src/Text/Regex/Do/Trim.hs
module Text.Regex.Do.Trim where
import Data.Char(isSpace)
import qualified Data.ByteString as B
import qualified Data.Text as T
import Text.Regex.Do.Type.Convert
import Text.Regex.Do.Replace.Latin
import Text.Regex.Do.Type.MatchHint
import Text.Regex.Do.Match.Regex
import Text.Regex.Do.Match.Option
{- | removes leading and trailing spaces and tabs -}
class Trim a where
trim::a -> a
instance Trim B.ByteString where
trim bs1 = replace (All rx3) repl1 bs1
where repl1 = B.empty
rx1 = "(^[\\s\\t]+)|([\\s\\t]+$)"
rx2 = toByteString rx1
Right rx3 = makeRegexOpt rx2 [Blank] []
instance Trim String where
trim = f . f
where f = reverse . dropWhile isSpace
instance Trim T.Text where
trim = T.strip
-- ^ see 'T.strip'