-- | -- Module: Parser.CaseUtils -- Copyright: (c) 2015-2016 Martijn Rijkeboer -- License: MIT -- Maintainer: Martijn Rijkeboer -- -- Utility functions for converting string cases. module Parser.CaseUtils where import Data.Char (toLower, toUpper) import Data.List (intercalate) import Data.List.Split (splitOn) fromDotted :: String -> [String] fromDotted = splitOn "." fromSnake :: String -> [String] fromSnake = splitOn "_" toCamel :: [String] -> String toCamel (w:ws) = toLowerWord w ++ concatMap toPascalWord ws toCamel [] = "" toDotted :: [String] -> String toDotted = intercalate "." toLowerWord :: String -> String toLowerWord = map toLower toPascal :: [String] -> String toPascal = concatMap toPascalWord toPascalWord :: String -> String toPascalWord (c:cs) = toUpper c : map toLower cs toPascalWord [] = "" toTitleWord :: String -> String toTitleWord (c:cs) = toUpper c : cs toTitleWord [] = ""