module Pregame.Aeson ( module X , noPrefixDeriveOptions , tailDeriveOptions ) where import Data.Aeson as X ( ToJSON , FromJSON ) import Data.Aeson.TH as X ( deriveJSON ) import Data.Aeson.Types ( defaultOptions , Options(fieldLabelModifier) ) import Pregame.Base noPrefixDeriveOptions :: String -> Options noPrefixDeriveOptions prefix = defaultOptions { fieldLabelModifier = lowerFirstChar . drop (length prefix) } where lowerFirstChar :: String -> String lowerFirstChar [] = [] lowerFirstChar (x:xs) = toLower x : xs tailDeriveOptions :: Options tailDeriveOptions = defaultOptions { fieldLabelModifier = drop 1 }