|
Packit |
9a2dfb |
{-# LANGUAGE CPP #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE GADTs #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE TemplateHaskell #-}
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
module Encoders (module Encoders) where
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
import Prelude ()
|
|
Packit |
9a2dfb |
import Prelude.Compat
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
import Data.Aeson.TH
|
|
Packit |
9a2dfb |
import Data.Aeson.Types
|
|
Packit |
9a2dfb |
import Options
|
|
Packit |
9a2dfb |
import Types
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- Nullary encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONString :: Nullary -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONString = $(mkToJSON defaultOptions ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingString :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingString = $(mkToEncoding defaultOptions ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONString :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
thNullaryParseJSONString = $(mkParseJSON defaultOptions ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSON2ElemArray :: Nullary -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSON2ElemArray = $(mkToJSON opts2ElemArray ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncoding2ElemArray :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncoding2ElemArray = $(mkToEncoding opts2ElemArray ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSON2ElemArray :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
thNullaryParseJSON2ElemArray = $(mkParseJSON opts2ElemArray ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONTaggedObject :: Nullary -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONTaggedObject = $(mkToJSON optsTaggedObject ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingTaggedObject :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingTaggedObject = $(mkToEncoding optsTaggedObject ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONTaggedObject :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
thNullaryParseJSONTaggedObject = $(mkParseJSON optsTaggedObject ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONObjectWithSingleField :: Nullary -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToJSON optsObjectWithSingleField ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingObjectWithSingleField :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToEncoding optsObjectWithSingleField ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONObjectWithSingleField :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
thNullaryParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField ''Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONString :: Nullary -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONString = genericToJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingString :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingString = genericToEncoding defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONString :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
gNullaryParseJSONString = genericParseJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSON2ElemArray :: Nullary -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSON2ElemArray = genericToJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncoding2ElemArray :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncoding2ElemArray = genericToEncoding opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSON2ElemArray :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
gNullaryParseJSON2ElemArray = genericParseJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONTaggedObject :: Nullary -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONTaggedObject = genericToJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingTaggedObject :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingTaggedObject = genericToEncoding optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONTaggedObject :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
gNullaryParseJSONTaggedObject = genericParseJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONObjectWithSingleField :: Nullary -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingObjectWithSingleField :: Nullary -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONObjectWithSingleField :: Value -> Parser Nullary
|
|
Packit |
9a2dfb |
gNullaryParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- SomeType encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- Unary types
|
|
Packit |
9a2dfb |
type LiftToJSON f a =
|
|
Packit |
9a2dfb |
(a -> Value) -> ([a] -> Value) -> f a -> Value
|
|
Packit |
9a2dfb |
type LiftToEncoding f a =
|
|
Packit |
9a2dfb |
(a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
|
|
Packit |
9a2dfb |
type LiftParseJSON f a =
|
|
Packit |
9a2dfb |
(Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSON2ElemArray :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSON2ElemArray = $(mkToJSON opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncoding2ElemArray :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncoding2ElemArray = $(mkToEncoding opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSON2ElemArray :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSON2ElemArray = $(mkLiftToJSON opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncoding2ElemArray :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncoding2ElemArray = $(mkLiftToEncoding opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSON2ElemArray = $(mkParseJSON opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSON2ElemArray :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSON2ElemArray = $(mkLiftParseJSON opts2ElemArray ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSONTaggedObject :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSONTaggedObject = $(mkToJSON optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingTaggedObject :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingTaggedObject = $(mkToEncoding optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSONTaggedObject :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSONTaggedObject = $(mkLiftToJSON optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncodingTaggedObject :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncodingTaggedObject = $(mkLiftToEncoding optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONTaggedObject = $(mkParseJSON optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSONTaggedObject :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSONTaggedObject = $(mkLiftParseJSON optsTaggedObject ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSONObjectWithSingleField :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSONObjectWithSingleField = $(mkToJSON optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingObjectWithSingleField :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingObjectWithSingleField = $(mkToEncoding optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSONObjectWithSingleField :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToJSONObjectWithSingleField = $(mkLiftToJSON optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncodingObjectWithSingleField :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftToEncodingObjectWithSingleField = $(mkLiftToEncoding optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSONObjectWithSingleField :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
thSomeTypeLiftParseJSONObjectWithSingleField = $(mkLiftParseJSON optsObjectWithSingleField ''SomeType)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSON2ElemArray :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSON2ElemArray = genericToJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncoding2ElemArray :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncoding2ElemArray = genericToEncoding opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSON2ElemArray = genericParseJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#if __GLASGOW_HASKELL__ >= 706
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncoding2ElemArray :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncoding2ElemArray = genericLiftToEncoding opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSON2ElemArray :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSON2ElemArray = genericLiftToJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSON2ElemArray :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSON2ElemArray = genericLiftParseJSON opts2ElemArray
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSONTaggedObject :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSONTaggedObject = genericToJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingTaggedObject :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingTaggedObject = genericToEncoding optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONTaggedObject = genericParseJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#if __GLASGOW_HASKELL__ >= 706
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncodingTaggedObject :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncodingTaggedObject = genericLiftToEncoding optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSONTaggedObject :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSONTaggedObject = genericLiftToJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSONTaggedObject :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSONTaggedObject = genericLiftParseJSON optsTaggedObject
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSONObjectWithSingleField :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingObjectWithSingleField :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
#if __GLASGOW_HASKELL__ >= 706
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncodingObjectWithSingleField :: LiftToEncoding SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToEncodingObjectWithSingleField = genericLiftToEncoding optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSONObjectWithSingleField :: LiftToJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftToJSONObjectWithSingleField = genericLiftToJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSONObjectWithSingleField :: LiftParseJSON SomeType a
|
|
Packit |
9a2dfb |
gSomeTypeLiftParseJSONObjectWithSingleField = genericLiftParseJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSONOmitNothingFields :: SomeType Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSONOmitNothingFields = genericToJSON optsOmitNothingFields
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingOmitNothingFields :: SomeType Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingOmitNothingFields = genericToEncoding optsOmitNothingFields
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- Option fields
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOptionFieldToJSON :: OptionField -> Value
|
|
Packit |
9a2dfb |
thOptionFieldToJSON = $(mkToJSON optsOptionField 'OptionField)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOptionFieldToEncoding :: OptionField -> Encoding
|
|
Packit |
9a2dfb |
thOptionFieldToEncoding = $(mkToEncoding optsOptionField 'OptionField)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOptionFieldParseJSON :: Value -> Parser OptionField
|
|
Packit |
9a2dfb |
thOptionFieldParseJSON = $(mkParseJSON optsOptionField 'OptionField)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOptionFieldToJSON :: OptionField -> Value
|
|
Packit |
9a2dfb |
gOptionFieldToJSON = genericToJSON optsOptionField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOptionFieldToEncoding :: OptionField -> Encoding
|
|
Packit |
9a2dfb |
gOptionFieldToEncoding = genericToEncoding optsOptionField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOptionFieldParseJSON :: Value -> Parser OptionField
|
|
Packit |
9a2dfb |
gOptionFieldParseJSON = genericParseJSON optsOptionField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thMaybeFieldToJSON :: MaybeField -> Value
|
|
Packit |
9a2dfb |
thMaybeFieldToJSON = $(mkToJSON optsOptionField 'MaybeField)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- IncoherentInstancesNeeded
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- | This test demonstrates the need for IncoherentInstances. See the definition
|
|
Packit |
9a2dfb |
-- of 'IncoherentInstancesNeeded' for a discussion of the issue.
|
|
Packit |
9a2dfb |
--
|
|
Packit |
9a2dfb |
-- NOTE 1: We only need to compile this test. We do not need to run it.
|
|
Packit |
9a2dfb |
--
|
|
Packit |
9a2dfb |
-- NOTE 2: We actually only use the INCOHERENT pragma on specific instances
|
|
Packit |
9a2dfb |
-- instead of the IncoherentInstances language extension. Therefore, this is
|
|
Packit |
9a2dfb |
-- only supported on GHC versions >= 7.10.
|
|
Packit |
9a2dfb |
#if __GLASGOW_HASKELL__ >= 710
|
|
Packit |
9a2dfb |
incoherentInstancesNeededParseJSONString :: FromJSON a => Value -> Parser (IncoherentInstancesNeeded a)
|
|
Packit |
9a2dfb |
incoherentInstancesNeededParseJSONString = case () of
|
|
Packit |
9a2dfb |
_ | True -> $(mkParseJSON defaultOptions ''IncoherentInstancesNeeded)
|
|
Packit |
9a2dfb |
| False -> genericParseJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
incoherentInstancesNeededToJSON :: ToJSON a => IncoherentInstancesNeeded a -> Value
|
|
Packit |
9a2dfb |
incoherentInstancesNeededToJSON = case () of
|
|
Packit |
9a2dfb |
_ | True -> $(mkToJSON defaultOptions ''IncoherentInstancesNeeded)
|
|
Packit |
9a2dfb |
| False -> genericToJSON defaultOptions
|
|
Packit |
9a2dfb |
#endif
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- EitherTextInt encoders/decodes
|
|
Packit |
9a2dfb |
-------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thEitherTextIntToJSONUntaggedValue :: EitherTextInt -> Value
|
|
Packit |
9a2dfb |
thEitherTextIntToJSONUntaggedValue = $(mkToJSON optsUntaggedValue ''EitherTextInt)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thEitherTextIntToEncodingUntaggedValue :: EitherTextInt -> Encoding
|
|
Packit |
9a2dfb |
thEitherTextIntToEncodingUntaggedValue = $(mkToEncoding optsUntaggedValue ''EitherTextInt)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thEitherTextIntParseJSONUntaggedValue :: Value -> Parser EitherTextInt
|
|
Packit |
9a2dfb |
thEitherTextIntParseJSONUntaggedValue = $(mkParseJSON optsUntaggedValue ''EitherTextInt)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gEitherTextIntToJSONUntaggedValue :: EitherTextInt -> Value
|
|
Packit |
9a2dfb |
gEitherTextIntToJSONUntaggedValue = genericToJSON optsUntaggedValue
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gEitherTextIntToEncodingUntaggedValue :: EitherTextInt -> Encoding
|
|
Packit |
9a2dfb |
gEitherTextIntToEncodingUntaggedValue = genericToEncoding optsUntaggedValue
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gEitherTextIntParseJSONUntaggedValue :: Value -> Parser EitherTextInt
|
|
Packit |
9a2dfb |
gEitherTextIntParseJSONUntaggedValue = genericParseJSON optsUntaggedValue
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- Approx encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxToJSONUnwrap :: Approx String -> Value
|
|
Packit |
9a2dfb |
thApproxToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxToEncodingUnwrap :: Approx String -> Encoding
|
|
Packit |
9a2dfb |
thApproxToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxParseJSONUnwrap :: Value -> Parser (Approx String)
|
|
Packit |
9a2dfb |
thApproxParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxToJSONDefault :: Approx String -> Value
|
|
Packit |
9a2dfb |
thApproxToJSONDefault = $(mkToJSON defaultOptions ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxToEncodingDefault :: Approx String -> Encoding
|
|
Packit |
9a2dfb |
thApproxToEncodingDefault = $(mkToEncoding defaultOptions ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thApproxParseJSONDefault :: Value -> Parser (Approx String)
|
|
Packit |
9a2dfb |
thApproxParseJSONDefault = $(mkParseJSON defaultOptions ''Approx)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxToJSONUnwrap :: Approx String -> Value
|
|
Packit |
9a2dfb |
gApproxToJSONUnwrap = genericToJSON optsUnwrapUnaryRecords
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxToEncodingUnwrap :: Approx String -> Encoding
|
|
Packit |
9a2dfb |
gApproxToEncodingUnwrap = genericToEncoding optsUnwrapUnaryRecords
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxParseJSONUnwrap :: Value -> Parser (Approx String)
|
|
Packit |
9a2dfb |
gApproxParseJSONUnwrap = genericParseJSON optsUnwrapUnaryRecords
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxToJSONDefault :: Approx String -> Value
|
|
Packit |
9a2dfb |
gApproxToJSONDefault = genericToJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxToEncodingDefault :: Approx String -> Encoding
|
|
Packit |
9a2dfb |
gApproxToEncodingDefault = genericToEncoding defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gApproxParseJSONDefault :: Value -> Parser (Approx String)
|
|
Packit |
9a2dfb |
gApproxParseJSONDefault = genericParseJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- GADT encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTToJSONUnwrap :: GADT String -> Value
|
|
Packit |
9a2dfb |
thGADTToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTToEncodingUnwrap :: GADT String -> Encoding
|
|
Packit |
9a2dfb |
thGADTToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTParseJSONUnwrap :: Value -> Parser (GADT String)
|
|
Packit |
9a2dfb |
thGADTParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTToJSONDefault :: GADT String -> Value
|
|
Packit |
9a2dfb |
thGADTToJSONDefault = $(mkToJSON defaultOptions ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTToEncodingDefault :: GADT String -> Encoding
|
|
Packit |
9a2dfb |
thGADTToEncodingDefault = $(mkToEncoding defaultOptions ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thGADTParseJSONDefault :: Value -> Parser (GADT String)
|
|
Packit |
9a2dfb |
thGADTParseJSONDefault = $(mkParseJSON defaultOptions ''GADT)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- OneConstructor encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorToJSONDefault :: OneConstructor -> Value
|
|
Packit |
9a2dfb |
thOneConstructorToJSONDefault = $(mkToJSON defaultOptions ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorToEncodingDefault :: OneConstructor -> Encoding
|
|
Packit |
9a2dfb |
thOneConstructorToEncodingDefault = $(mkToEncoding defaultOptions ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorParseJSONDefault :: Value -> Parser OneConstructor
|
|
Packit |
9a2dfb |
thOneConstructorParseJSONDefault = $(mkParseJSON defaultOptions ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorToJSONTagged :: OneConstructor -> Value
|
|
Packit |
9a2dfb |
thOneConstructorToJSONTagged = $(mkToJSON optsTagSingleConstructors ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorToEncodingTagged :: OneConstructor -> Encoding
|
|
Packit |
9a2dfb |
thOneConstructorToEncodingTagged = $(mkToEncoding optsTagSingleConstructors ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thOneConstructorParseJSONTagged :: Value -> Parser OneConstructor
|
|
Packit |
9a2dfb |
thOneConstructorParseJSONTagged = $(mkParseJSON optsTagSingleConstructors ''OneConstructor)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorToJSONDefault :: OneConstructor -> Value
|
|
Packit |
9a2dfb |
gOneConstructorToJSONDefault = genericToJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorToEncodingDefault :: OneConstructor -> Encoding
|
|
Packit |
9a2dfb |
gOneConstructorToEncodingDefault = genericToEncoding defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorParseJSONDefault :: Value -> Parser OneConstructor
|
|
Packit |
9a2dfb |
gOneConstructorParseJSONDefault = genericParseJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorToJSONTagged :: OneConstructor -> Value
|
|
Packit |
9a2dfb |
gOneConstructorToJSONTagged = genericToJSON optsTagSingleConstructors
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorToEncodingTagged :: OneConstructor -> Encoding
|
|
Packit |
9a2dfb |
gOneConstructorToEncodingTagged = genericToEncoding optsTagSingleConstructors
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gOneConstructorParseJSONTagged :: Value -> Parser OneConstructor
|
|
Packit |
9a2dfb |
gOneConstructorParseJSONTagged = genericParseJSON optsTagSingleConstructors
|