feat(haskell): add title case

This commit is contained in:
Dmitriy Pleshevskiy 2022-04-19 10:50:02 +03:00
parent 2de1f283bd
commit 11b969d169
1 changed files with 26 additions and 0 deletions

26
haskell/9_title_case.hs Normal file
View File

@ -0,0 +1,26 @@
module TitleCase (titleCase) where
import qualified Data.Char as Char
titleCase :: String -> String -> String
titleCase minor title =
unwords $
map toTitle (take 1 titleWords)
<> map maybeToTitle (drop 1 titleWords)
where
titleWords, minorWords :: [String]
titleWords = words . toLower $ title
minorWords = words . toLower $ minor
maybeToTitle :: String -> String
maybeToTitle word
| word `elem` minorWords = word
| otherwise = toTitle word
toTitle :: String -> String
toTitle t = case t of
"" -> ""
(x:xs) -> Char.toUpper x : xs
toLower :: String -> String
toLower = map Char.toLower