packages feed

domain-core-0.1: library/DomainCore/Text.hs

module DomainCore.Text
where

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


recordField underscore prefixWithTypeName a b =
  bool mempty "_" underscore <>
  bool b (lcFirst a <> ucFirst b) prefixWithTypeName

sumConstructor a b =
  ucFirst b <> a

mapFirstChar fn =
  foldMap (\ (a, b) -> cons (fn a) b) .
  uncons

ucFirst =
  mapFirstChar Char.toUpper

lcFirst =
  mapFirstChar Char.toLower