packages feed

domaindriven-0.5.0: src/DomainDriven/Internal/Text.hs

module DomainDriven.Internal.Text where

import Data.Char
    ( toLower
    , toUpper
    )
import Data.Text (Text)
import qualified Data.Text as T
import Prelude

lowerFirst :: String -> String
lowerFirst = \case
    [] -> []
    c : cs -> toLower c : cs

lowerFirstT :: Text -> Text
lowerFirstT = T.pack . lowerFirst . T.unpack

upperFirst :: String -> String
upperFirst = \case
    [] -> []
    c : cs -> toUpper c : cs

upperFirstT :: Text -> Text
upperFirstT = T.pack . upperFirst . T.unpack

camelAppend :: String -> String -> String
camelAppend a b = a <> upperFirst b

camelAppendT :: Text -> Text -> Text
camelAppendT a b = a <> upperFirstT b