, andRestArguments
, withDoc
, defaultField
+ , notSerializeDefaultField
+ , presentInForthcoming
, optionalField
, optionalNullSerField
+ , makeOptional
, renameField
, customField
, buildObject
defaultField :: Q Exp -> Field -> Field
defaultField defval field = field { fieldDefault = Just defval }
+ -- | A defaultField which will be serialized only if it's value differs from
+ -- a default value.
+ notSerializeDefaultField :: Q Exp -> Field -> Field
+ notSerializeDefaultField defval field =
+ field { fieldDefault = Just defval
+ , fieldSerializeDefault = False }
+
+-- | Mark a field as present in the forthcoming variant.
+presentInForthcoming :: Field -> Field
+presentInForthcoming field = field { fieldPresentInForthcoming = True }
+
-- | Marks a field optional (turning its base type into a Maybe).
optionalField :: Field -> Field
optionalField field = field { fieldIsOptional = OptionalOmitNull }