module Data.Aeson.TH.Extended
( module Data.Aeson.TH
, dropPrefixOptions
) where
import Data.Aeson.TH
import Data.Char (isUpper, toLower)
dropPrefixOptions :: Options
dropPrefixOptions :: Options
dropPrefixOptions = Options
defaultOptions
{ fieldLabelModifier :: String -> String
fieldLabelModifier = String -> String
dropPrefix
}
where
dropPrefix :: String -> String
dropPrefix str :: String
str = case (Char -> Bool) -> String -> (String, String)
forall a. (a -> Bool) -> [a] -> ([a], [a])
break Char -> Bool
isUpper String
str of
(_, (y :: Char
y : ys :: String
ys)) -> Char -> Char
toLower Char
y Char -> String -> String
forall a. a -> [a] -> [a]
: String
ys
_ -> String
str