module DataFrame.Typed.Util (
camelToSnake,
) where
import Data.Char (isUpper, toLower)
camelToSnake :: String -> String
camelToSnake :: String -> String
camelToSnake [] = []
camelToSnake (Char
c : String
cs) = Char -> Char
toLower Char
c Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
go String
cs
where
go :: String -> String
go [] = []
go (Char
x : String
xs)
| Char -> Bool
isUpper Char
x = Char
'_' Char -> String -> String
forall a. a -> [a] -> [a]
: Char -> Char
toLower Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
go String
xs
| Bool
otherwise = Char
x Char -> String -> String
forall a. a -> [a] -> [a]
: String -> String
go String
xs