{-# LANGUAGE CPP #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE TemplateHaskell #-} module DataFamilies.Encoders (module DataFamilies.Encoders) where import Prelude () import Prelude.Compat import Data.Aeson.TH import Data.Aeson.Types import DataFamilies.Types import Options -------------------------------------------------------------------------------- -- Nullary encoders/decoders -------------------------------------------------------------------------------- thNullaryToJSONString :: Nullary Int -> Value thNullaryToJSONString = $(mkToJSON defaultOptions 'C1) thNullaryToEncodingString :: Nullary Int -> Encoding thNullaryToEncodingString = $(mkToEncoding defaultOptions 'C2) thNullaryParseJSONString :: Value -> Parser (Nullary Int) thNullaryParseJSONString = $(mkParseJSON defaultOptions 'C3) thNullaryToJSON2ElemArray :: Nullary Int -> Value thNullaryToJSON2ElemArray = $(mkToJSON opts2ElemArray 'C1) thNullaryToEncoding2ElemArray :: Nullary Int -> Encoding thNullaryToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'C2) thNullaryParseJSON2ElemArray :: Value -> Parser (Nullary Int) thNullaryParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'C3) thNullaryToJSONTaggedObject :: Nullary Int -> Value thNullaryToJSONTaggedObject = $(mkToJSON optsTaggedObject 'C1) thNullaryToEncodingTaggedObject :: Nullary Int -> Encoding thNullaryToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'C2) thNullaryParseJSONTaggedObject :: Value -> Parser (Nullary Int) thNullaryParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'C3) thNullaryToJSONObjectWithSingleField :: Nullary Int -> Value thNullaryToJSONObjectWithSingleField = $(mkToJSON optsObjectWithSingleField 'C1) thNullaryToEncodingObjectWithSingleField :: Nullary Int -> Encoding thNullaryToEncodingObjectWithSingleField = $(mkToEncoding optsObjectWithSingleField 'C2) thNullaryParseJSONObjectWithSingleField :: Value -> Parser (Nullary Int) thNullaryParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField 'C3) -------------------------------------------------------------------------------- -- SomeType encoders/decoders -------------------------------------------------------------------------------- thSomeTypeToJSON2ElemArray :: SomeType c () Int -> Value thSomeTypeToJSON2ElemArray = $(mkToJSON opts2ElemArray 'Nullary) thSomeTypeToEncoding2ElemArray :: SomeType c () Int -> Encoding thSomeTypeToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'Unary) thSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType c () Int) thSomeTypeParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'Product) thSomeTypeToJSONTaggedObject :: SomeType c () Int -> Value thSomeTypeToJSONTaggedObject = $(mkToJSON optsTaggedObject 'Record) thSomeTypeToEncodingTaggedObject :: SomeType c () Int -> Encoding thSomeTypeToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'Nullary) thSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType c () Int) thSomeTypeParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'Unary) thSomeTypeToJSONObjectWithSingleField :: SomeType c () Int -> Value thSomeTypeToJSONObjectWithSingleField = $(mkToJSON optsObjectWithSingleField 'Product) thSomeTypeToEncodingObjectWithSingleField :: SomeType c () Int -> Encoding thSomeTypeToEncodingObjectWithSingleField = $(mkToEncoding optsObjectWithSingleField 'Record) thSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType c () Int) thSomeTypeParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField 'Nullary) -------------------------------------------------------------------------------- -- Approx encoders/decoders -------------------------------------------------------------------------------- thApproxToJSONUnwrap :: Approx String -> Value thApproxToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords 'Approx) thApproxToEncodingUnwrap :: Approx String -> Encoding thApproxToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords 'Approx) thApproxParseJSONUnwrap :: Value -> Parser (Approx String) thApproxParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords 'Approx) thApproxToJSONDefault :: Approx String -> Value thApproxToJSONDefault = $(mkToJSON defaultOptions 'Approx) thApproxToEncodingDefault :: Approx String -> Encoding thApproxToEncodingDefault = $(mkToEncoding defaultOptions 'Approx) thApproxParseJSONDefault :: Value -> Parser (Approx String) thApproxParseJSONDefault = $(mkParseJSON defaultOptions 'Approx) -------------------------------------------------------------------------------- -- GADT encoders/decoders -------------------------------------------------------------------------------- thGADTToJSONUnwrap :: GADT String -> Value thGADTToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords 'GADT) thGADTToEncodingUnwrap :: GADT String -> Encoding thGADTToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords 'GADT) thGADTParseJSONUnwrap :: Value -> Parser (GADT String) thGADTParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords 'GADT) thGADTToJSONDefault :: GADT String -> Value thGADTToJSONDefault = $(mkToJSON defaultOptions 'GADT) thGADTToEncodingDefault :: GADT String -> Encoding thGADTToEncodingDefault = $(mkToEncoding defaultOptions 'GADT) thGADTParseJSONDefault :: Value -> Parser (GADT String) thGADTParseJSONDefault = $(mkParseJSON defaultOptions 'GADT) -------------------------------------------------------------------------------- -- Generic encoders/decoders -------------------------------------------------------------------------------- -- Nullary gNullaryToJSONString :: Nullary Int -> Value gNullaryToJSONString = genericToJSON defaultOptions gNullaryToEncodingString :: Nullary Int -> Encoding gNullaryToEncodingString = genericToEncoding defaultOptions gNullaryParseJSONString :: Value -> Parser (Nullary Int) gNullaryParseJSONString = genericParseJSON defaultOptions gNullaryToJSON2ElemArray :: Nullary Int -> Value gNullaryToJSON2ElemArray = genericToJSON opts2ElemArray gNullaryToEncoding2ElemArray :: Nullary Int -> Encoding gNullaryToEncoding2ElemArray = genericToEncoding opts2ElemArray gNullaryParseJSON2ElemArray :: Value -> Parser (Nullary Int) gNullaryParseJSON2ElemArray = genericParseJSON opts2ElemArray gNullaryToJSONTaggedObject :: Nullary Int -> Value gNullaryToJSONTaggedObject = genericToJSON optsTaggedObject gNullaryToEncodingTaggedObject :: Nullary Int -> Encoding gNullaryToEncodingTaggedObject = genericToEncoding optsTaggedObject gNullaryParseJSONTaggedObject :: Value -> Parser (Nullary Int) gNullaryParseJSONTaggedObject = genericParseJSON optsTaggedObject gNullaryToJSONObjectWithSingleField :: Nullary Int -> Value gNullaryToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField gNullaryToEncodingObjectWithSingleField :: Nullary Int -> Encoding gNullaryToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField gNullaryParseJSONObjectWithSingleField :: Value -> Parser (Nullary Int) gNullaryParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField -- SomeType gSomeTypeToJSON2ElemArray :: SomeType c () Int -> Value gSomeTypeToJSON2ElemArray = genericToJSON opts2ElemArray gSomeTypeToEncoding2ElemArray :: SomeType c () Int -> Encoding gSomeTypeToEncoding2ElemArray = genericToEncoding opts2ElemArray gSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType c () Int) gSomeTypeParseJSON2ElemArray = genericParseJSON opts2ElemArray gSomeTypeToJSONTaggedObject :: SomeType c () Int -> Value gSomeTypeToJSONTaggedObject = genericToJSON optsTaggedObject gSomeTypeToEncodingTaggedObject :: SomeType c () Int -> Encoding gSomeTypeToEncodingTaggedObject = genericToEncoding optsTaggedObject gSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType c () Int) gSomeTypeParseJSONTaggedObject = genericParseJSON optsTaggedObject gSomeTypeToJSONObjectWithSingleField :: SomeType c () Int -> Value gSomeTypeToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField gSomeTypeToEncodingObjectWithSingleField :: SomeType c () Int -> Encoding gSomeTypeToEncodingObjectWithSingleField = genericToEncoding optsObjectWithSingleField gSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType c () Int) gSomeTypeParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField -- Approx gApproxToJSONUnwrap :: Approx String -> Value gApproxToJSONUnwrap = genericToJSON optsUnwrapUnaryRecords gApproxToEncodingUnwrap :: Approx String -> Encoding gApproxToEncodingUnwrap = genericToEncoding optsUnwrapUnaryRecords gApproxParseJSONUnwrap :: Value -> Parser (Approx String) gApproxParseJSONUnwrap = genericParseJSON optsUnwrapUnaryRecords gApproxToJSONDefault :: Approx String -> Value gApproxToJSONDefault = genericToJSON defaultOptions gApproxToEncodingDefault :: Approx String -> Encoding gApproxToEncodingDefault = genericToEncoding defaultOptions gApproxParseJSONDefault :: Value -> Parser (Approx String) gApproxParseJSONDefault = genericParseJSON defaultOptions