module Util (normalizeFields) where import Data.Char import Data.List normalizeFields :: String -> [String] -> [String] normalizeFields name fields = map toSnakeCase xs where xs | all (uncapitalize name `isPrefixOf`) fields = map (drop (length name)) fields | otherwise = fields uncapitalize :: String -> String uncapitalize "" = "" uncapitalize (x:xs) = toLower x : xs toSnakeCase :: String -> String toSnakeCase = foldr f [] . uncapitalize where f x xs | isUpper x = '_' : toLower x : xs | otherwise = x : xs