1 module Network.HTTP.Lucu.Utils
2 ( splitBy -- (a -> Bool) -> [a] -> [[a]]
3 , joinWith -- [a] -> [[a]] -> [a]
4 , trim -- (a -> Bool) -> [a] -> [a]
5 , noCaseEq -- String -> String -> Bool
6 , isWhiteSpace -- Char -> Bool
10 import Control.Monad.Trans
17 splitBy :: (a -> Bool) -> [a] -> [[a]]
18 splitBy isSeparator src
19 = case break isSeparator src
20 of (last , [] ) -> last : []
21 (first, sep:rest) -> first : splitBy isSeparator rest
24 joinWith :: [a] -> [[a]] -> [a]
26 = foldr (++) [] $ intersperse separator xs
29 trim :: (a -> Bool) -> [a] -> [a]
30 trim p = trimTail . trimHead
32 trimHead = dropWhile p
33 trimTail = reverse . trimHead . reverse
36 noCaseEq :: String -> String -> Bool
38 = (map toLower a) == (map toLower b)
41 isWhiteSpace :: Char -> Bool
42 isWhiteSpace = flip elem " \t\r\n"