blockfrost-api-0.1.0.0: src/Blockfrost/Types/Shared/Opts.hs
-- | Aeson options and helpers
{-# OPTIONS_HADDOCK hide #-}
module Blockfrost.Types.Shared.Opts
( ToLower
, aesonOptions
) where
import Data.Aeson (Options (..), camelTo2, defaultOptions)
import Data.Char (toLower)
import Deriving.Aeson (StringModifier (..))
data ToLower
instance StringModifier ToLower where
getStringModifier "" = ""
getStringModifier (c : xs) = toLower c : xs
aesonOptions :: Maybe String -> Options
aesonOptions mPrefix = defaultOptions {
fieldLabelModifier = camelTo2 '_' . dropIfPrefixed
, constructorTagModifier = map toLower
}
where dropIfPrefixed = maybe id (drop . length) mPrefix