module Chez.Grater.Internal.Json where import Chez.Grater.Internal.Prelude import Data.Aeson.TH ( Options, allNullaryToStringTag, constructorTagModifier, defaultOptions, fieldLabelModifier , omitNothingFields ) import Data.Char (toLower) import Data.List (stripPrefix) lowerFirst :: String -> String lowerFirst :: String -> String lowerFirst ((Char -> Char toLower -> Char c) : String cs) = Char c Char -> String -> String forall a. a -> [a] -> [a] : String cs lowerFirst String cs = String cs jsonOptions :: String -> Options jsonOptions :: String -> Options jsonOptions String prefix = Options defaultOptions { fieldLabelModifier :: String -> String fieldLabelModifier = \String field -> String -> String lowerFirst (String -> String) -> (String -> String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Maybe String -> String forall a. a -> Maybe a -> a fromMaybe String field (Maybe String -> String) -> (String -> Maybe String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> String -> Maybe String forall a. Eq a => [a] -> [a] -> Maybe [a] stripPrefix String prefix (String -> String) -> String -> String forall a b. (a -> b) -> a -> b $ String field , constructorTagModifier :: String -> String constructorTagModifier = String -> String lowerFirst , allNullaryToStringTag :: Bool allNullaryToStringTag = Bool True , omitNothingFields :: Bool omitNothingFields = Bool True }