module Servant.TypeScript.Util where import Data.Char import Data.Text (Text) import qualified Data.Text as T snakeToCamel :: Text -> Text snakeToCamel :: Text -> Text snakeToCamel Text t = [Text] -> Text toCamelList ([Text] -> Text) -> [Text] -> Text forall a b. (a -> b) -> a -> b $ Text -> Text -> [Text] T.splitOn Text "_" Text t toCamelList :: [Text] -> Text toCamelList :: [Text] -> Text toCamelList [] = Text "" toCamelList [Text x] = Text -> Text T.toLower Text x toCamelList (Text x:[Text] xs) = [Text] -> Text forall a. Monoid a => [a] -> a mconcat (Text -> Text T.toLower Text x Text -> [Text] -> [Text] forall a. a -> [a] -> [a] : (Text -> Text) -> [Text] -> [Text] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Text -> Text capitalize [Text] xs) capitalize :: Text -> Text capitalize :: Text -> Text capitalize Text t | Text -> Int T.length Text t Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 1 = Text -> Text T.toUpper Text t capitalize Text t = Char -> Char toUpper (Text -> Char T.head Text t) Char -> Text -> Text `T.cons` Text -> Text T.tail Text t