> module Database.Dawdle.Utils > (getFstIfJust > ,isCTNumber > ,isInt > ,maybeToEither > ,allTheSame > ,normalizeNames > ) > where > import Data.Char > import Data.List
> getFstIfJust :: (a, Maybe b) -> Maybe a > getFstIfJust (a,Just _) = Just a > getFstIfJust _ = Nothing
> isCTNumber :: String -> Bool > isCTNumber = all (\x -> isNumber x || x `elem` ['-','.'])
> isInt :: String -> Bool > isInt = all (\x -> isNumber x || x =='-')
> maybeToEither :: String -> Maybe a -> Either String a > maybeToEither _ (Just x) = Right x > maybeToEither s Nothing = Left s
> allTheSame :: (Eq a) => [a] -> Bool > allTheSame xs = and $ map (== head xs) (tail xs)
> normalizeNames :: [String] -> [String] > normalizeNames = map normalize > where > normalize = map toLower . (filter (\x -> x=='_' || isAlphaNum x)) . intercalate "_" . words