{-# Language CPP, TemplateHaskell #-} module Encoders where import Data.Aeson.TH import Data.Aeson.Types import Options import Types
--------------------------------------------------------------------------------
-- Nullary encoders/decoders
--------------------------------------------------------------------------------
thNullaryToJSONString
::
Nullary
->
Value
thNullaryToJSONString
=
$(mkToJSON defaultOptions ''Nullary)
thNullaryParseJSONString
::
Value
->
Parser
Nullary
thNullaryParseJSONString
=
$(mkParseJSON defaultOptions ''Nullary)
thNullaryToJSON2ElemArray
::
Nullary
->
Value
thNullaryToJSON2ElemArray
=
$(mkToJSON opts2ElemArray ''Nullary)
thNullaryParseJSON2ElemArray
::
Value
->
Parser
Nullary
thNullaryParseJSON2ElemArray
=
$(mkParseJSON opts2ElemArray ''Nullary)
thNullaryToJSONTaggedObject
::
Nullary
->
Value
thNullaryToJSONTaggedObject
=
$(mkToJSON optsTaggedObject ''Nullary)
thNullaryParseJSONTaggedObject
::
Value
->
Parser
Nullary
thNullaryParseJSONTaggedObject
=
$(mkParseJSON optsTaggedObject ''Nullary)
thNullaryToJSONObjectWithSingleField
::
Nullary
->
Value
thNullaryToJSONObjectWithSingleField
=
$(mkToJSON optsObjectWithSingleField ''Nullary)
thNullaryParseJSONObjectWithSingleField
::
Value
->
Parser
Nullary
thNullaryParseJSONObjectWithSingleField
=
$(mkParseJSON optsObjectWithSingleField ''Nullary)
#ifdef GHC_GENERICS
gNullaryToJSONString
::
Nullary
->
Value
gNullaryToJSONString
=
genericToJSON
defaultOptions
gNullaryParseJSONString
::
Value
->
Parser
Nullary
gNullaryParseJSONString
=
genericParseJSON
defaultOptions
gNullaryToJSON2ElemArray
::
Nullary
->
Value
gNullaryToJSON2ElemArray
=
genericToJSON
opts2ElemArray
gNullaryParseJSON2ElemArray
::
Value
->
Parser
Nullary
gNullaryParseJSON2ElemArray
=
genericParseJSON
opts2ElemArray
gNullaryToJSONTaggedObject
::
Nullary
->
Value
gNullaryToJSONTaggedObject
=
genericToJSON
optsTaggedObject
gNullaryParseJSONTaggedObject
::
Value
->
Parser
Nullary
gNullaryParseJSONTaggedObject
=
genericParseJSON
optsTaggedObject
gNullaryToJSONObjectWithSingleField
::
Nullary
->
Value
gNullaryToJSONObjectWithSingleField
=
genericToJSON
optsObjectWithSingleField
gNullaryParseJSONObjectWithSingleField
::
Value
->
Parser
Nullary
gNullaryParseJSONObjectWithSingleField
=
genericParseJSON
optsObjectWithSingleField
#endif
--------------------------------------------------------------------------------
-- SomeType encoders/decoders
--------------------------------------------------------------------------------
type SomeTypeToJSON = SomeType Int -> Value
thSomeTypeToJSON2ElemArray
::
ToJSON a =>
SomeType
a
->
Value
thSomeTypeToJSON2ElemArray
=
$(mkToJSON opts2ElemArray ''SomeType)
thSomeTypeParseJSON2ElemArray
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
thSomeTypeParseJSON2ElemArray
=
$(mkParseJSON opts2ElemArray ''SomeType)
thSomeTypeToJSONTaggedObject
::
ToJSON a =>
SomeType
a
->
Value
thSomeTypeToJSONTaggedObject
=
$(mkToJSON optsTaggedObject ''SomeType)
thSomeTypeParseJSONTaggedObject
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
thSomeTypeParseJSONTaggedObject
=
$(mkParseJSON optsTaggedObject ''SomeType)
thSomeTypeToJSONObjectWithSingleField
::
ToJSON a =>
SomeType
a
->
Value
thSomeTypeToJSONObjectWithSingleField
=
$(mkToJSON optsObjectWithSingleField ''SomeType)
thSomeTypeParseJSONObjectWithSingleField
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
thSomeTypeParseJSONObjectWithSingleField
=
$(mkParseJSON optsObjectWithSingleField ''SomeType)
#ifdef GHC_GENERICS
gSomeTypeToJSON2ElemArray
::
ToJSON a =>
SomeType
a
->
Value
gSomeTypeToJSON2ElemArray
=
genericToJSON
opts2ElemArray
gSomeTypeParseJSON2ElemArray
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
gSomeTypeParseJSON2ElemArray
=
genericParseJSON
opts2ElemArray
gSomeTypeToJSONTaggedObject
::
ToJSON a =>
SomeType
a
->
Value
gSomeTypeToJSONTaggedObject
=
genericToJSON
optsTaggedObject
gSomeTypeParseJSONTaggedObject
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
gSomeTypeParseJSONTaggedObject
=
genericParseJSON
optsTaggedObject
gSomeTypeToJSONObjectWithSingleField
::
ToJSON a =>
SomeType
a
->
Value
gSomeTypeToJSONObjectWithSingleField
=
genericToJSON
optsObjectWithSingleField
gSomeTypeParseJSONObjectWithSingleField
::
FromJSON a =>
Value
->
Parser
(
SomeType
a
)
gSomeTypeParseJSONObjectWithSingleField
=
genericParseJSON
optsObjectWithSingleField
#endif