module Domain.Text
where

import Domain.Prelude
import Data.Text
import qualified Data.Char as Char


mapFirstChar :: (Char -> Char) -> Text -> Text
mapFirstChar Char -> Char
fn =
  forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap (\ (Char
a, Text
b) -> Char -> Text -> Text
cons (Char -> Char
fn Char
a) Text
b) forall {k} (cat :: k -> k -> *) (b :: k) (c :: k) (a :: k).
Category cat =>
cat b c -> cat a b -> cat a c
.
  Text -> Maybe (Char, Text)
uncons

ucFirst :: Text -> Text
ucFirst =
  (Char -> Char) -> Text -> Text
mapFirstChar Char -> Char
Char.toUpper

lcFirst :: Text -> Text
lcFirst =
  (Char -> Char) -> Text -> Text
mapFirstChar Char -> Char
Char.toLower