module Sqel.Text.Case where import Data.Char (isLower, isUpper, toLower) import Data.Composition ((.:)) unCamelCaseString :: Char -> String -> String unCamelCaseString :: Char -> [Char] -> [Char] unCamelCaseString Char sep = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Char -> Char toLower forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. [a] -> [a] reverse forall b c a. (b -> c) -> (a -> b) -> a -> c . forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl [Char] -> Char -> [Char] f [] where f :: [Char] -> Char -> [Char] f [] Char c = [Char c] f (Char h1 : Char h2 : [Char] t) Char c | Char -> Bool isLower Char c Bool -> Bool -> Bool && Char -> Bool isUpper Char h1 Bool -> Bool -> Bool && Char -> Bool isUpper Char h2 = Char c forall a. a -> [a] -> [a] : Char h1 forall a. a -> [a] -> [a] : Char sep forall a. a -> [a] -> [a] : Char h2 forall a. a -> [a] -> [a] : [Char] t f (Char h : [Char] t) Char c | Char -> Bool isUpper Char c Bool -> Bool -> Bool && Char -> Bool isLower Char h = Char c forall a. a -> [a] -> [a] : Char sep forall a. a -> [a] -> [a] : Char h forall a. a -> [a] -> [a] : [Char] t f [Char] z Char c = Char c forall a. a -> [a] -> [a] : [Char] z unCamelCase :: Char -> String -> Text unCamelCase :: Char -> [Char] -> Text unCamelCase = forall a. ToText a => a -> Text toText forall c d a b. (c -> d) -> (a -> b -> c) -> a -> b -> d .: Char -> [Char] -> [Char] unCamelCaseString unCamelCaseText :: Char -> Text -> Text unCamelCaseText :: Char -> Text -> Text unCamelCaseText Char sep = Char -> [Char] -> Text unCamelCase Char sep forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. ToString a => a -> [Char] toString