feat(haskell): add title case
This commit is contained in:
parent
2de1f283bd
commit
11b969d169
1 changed files with 26 additions and 0 deletions
26
haskell/9_title_case.hs
Normal file
26
haskell/9_title_case.hs
Normal 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
|
Loading…
Reference in a new issue