|
Packit |
9a2dfb |
{-# LANGUAGE CPP #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE GADTs #-}
|
|
Packit |
9a2dfb |
{-# LANGUAGE TemplateHaskell #-}
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
module DataFamilies.Encoders (module DataFamilies.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 DataFamilies.Types
|
|
Packit |
9a2dfb |
import Options
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- Nullary encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONString :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONString = $(mkToJSON defaultOptions 'C1)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingString :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingString = $(mkToEncoding defaultOptions 'C2)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONString :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
thNullaryParseJSONString = $(mkParseJSON defaultOptions 'C3)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSON2ElemArray :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSON2ElemArray = $(mkToJSON opts2ElemArray 'C1)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncoding2ElemArray :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'C2)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSON2ElemArray :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
thNullaryParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'C3)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONTaggedObject :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONTaggedObject = $(mkToJSON optsTaggedObject 'C1)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingTaggedObject :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'C2)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONTaggedObject :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
thNullaryParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'C3)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToJSONObjectWithSingleField :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
thNullaryToJSONObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToJSON optsObjectWithSingleField 'C1)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryToEncodingObjectWithSingleField :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
thNullaryToEncodingObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToEncoding optsObjectWithSingleField 'C2)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thNullaryParseJSONObjectWithSingleField :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
thNullaryParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField 'C3)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
-- SomeType encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSON2ElemArray :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSON2ElemArray = $(mkToJSON opts2ElemArray 'Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncoding2ElemArray :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'Unary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'Product)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSONTaggedObject :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSONTaggedObject = $(mkToJSON optsTaggedObject 'Record)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingTaggedObject :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'Nullary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'Unary)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToJSONObjectWithSingleField :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
thSomeTypeToJSONObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToJSON optsObjectWithSingleField 'Product)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingObjectWithSingleField :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
thSomeTypeToEncodingObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkToEncoding optsObjectWithSingleField 'Record)
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
thSomeTypeParseJSONObjectWithSingleField =
|
|
Packit |
9a2dfb |
$(mkParseJSON optsObjectWithSingleField 'Nullary)
|
|
Packit |
9a2dfb |
|
|
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 |
--------------------------------------------------------------------------------
|
|
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 |
-- Generic encoders/decoders
|
|
Packit |
9a2dfb |
--------------------------------------------------------------------------------
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- Nullary
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONString :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONString = genericToJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingString :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingString = genericToEncoding defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONString :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
gNullaryParseJSONString = genericParseJSON defaultOptions
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSON2ElemArray :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSON2ElemArray = genericToJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncoding2ElemArray :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncoding2ElemArray = genericToEncoding opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSON2ElemArray :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
gNullaryParseJSON2ElemArray = genericParseJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONTaggedObject :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONTaggedObject = genericToJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingTaggedObject :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingTaggedObject = genericToEncoding optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONTaggedObject :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
gNullaryParseJSONTaggedObject = genericParseJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToJSONObjectWithSingleField :: Nullary Int -> Value
|
|
Packit |
9a2dfb |
gNullaryToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryToEncodingObjectWithSingleField :: Nullary Int -> Encoding
|
|
Packit |
9a2dfb |
gNullaryToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gNullaryParseJSONObjectWithSingleField :: Value -> Parser (Nullary Int)
|
|
Packit |
9a2dfb |
gNullaryParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- SomeType
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSON2ElemArray :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSON2ElemArray = genericToJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncoding2ElemArray :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncoding2ElemArray = genericToEncoding opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSON2ElemArray = genericParseJSON opts2ElemArray
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSONTaggedObject :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSONTaggedObject = genericToJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingTaggedObject :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingTaggedObject = genericToEncoding optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONTaggedObject = genericParseJSON optsTaggedObject
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToJSONObjectWithSingleField :: SomeType c () Int -> Value
|
|
Packit |
9a2dfb |
gSomeTypeToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingObjectWithSingleField :: SomeType c () Int -> Encoding
|
|
Packit |
9a2dfb |
gSomeTypeToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType c () Int)
|
|
Packit |
9a2dfb |
gSomeTypeParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
|
|
Packit |
9a2dfb |
|
|
Packit |
9a2dfb |
-- 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
|