module Text.RE.ZeInternals.EscapeREString where
escapeREString :: String -> String
escapeREString :: String -> String
escapeREString = (Char -> String -> String) -> String -> String -> String
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr Char -> String -> String
esc []
where
esc :: Char -> String -> String
esc Char
c String
t | Char -> Bool
isMetaChar Char
c = Char
'\\' Char -> String -> String
forall a. a -> [a] -> [a]
: Char
c Char -> String -> String
forall a. a -> [a] -> [a]
: String
t
| Bool
otherwise = Char
c Char -> String -> String
forall a. a -> [a] -> [a]
: String
t
isMetaChar :: Char -> Bool
isMetaChar :: Char -> Bool
isMetaChar Char
c = case Char
c of
Char
'^' -> Bool
True
Char
'\\' -> Bool
True
Char
'.' -> Bool
True
Char
'|' -> Bool
True
Char
'*' -> Bool
True
Char
'?' -> Bool
True
Char
'+' -> Bool
True
Char
'(' -> Bool
True
Char
')' -> Bool
True
Char
'[' -> Bool
True
Char
']' -> Bool
True
Char
'{' -> Bool
True
Char
'}' -> Bool
True
Char
'$' -> Bool
True
Char
_ -> Bool
False