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