on 0.8.1.0 help sign in
typeable/aeson/tests/Encoders.hs
118 lines 4.4 kB history raw
1{-# Language CPP, TemplateHaskell #-}
3module Encoders where
5import Data.Aeson.TH
6import Data.Aeson.Types
7import Options
8import Types
10--------------------------------------------------------------------------------
11-- Nullary encoders/decoders
12--------------------------------------------------------------------------------
14thNullaryToJSONString :: Nullary -> Value
15thNullaryToJSONString = $(mkToJSON defaultOptions ''Nullary)
17thNullaryParseJSONString :: Value -> Parser Nullary
18thNullaryParseJSONString = $(mkParseJSON defaultOptions ''Nullary)
21thNullaryToJSON2ElemArray :: Nullary -> Value
22thNullaryToJSON2ElemArray = $(mkToJSON opts2ElemArray ''Nullary)
24thNullaryParseJSON2ElemArray :: Value -> Parser Nullary
25thNullaryParseJSON2ElemArray = $(mkParseJSON opts2ElemArray ''Nullary)
28thNullaryToJSONTaggedObject :: Nullary -> Value
29thNullaryToJSONTaggedObject = $(mkToJSON optsTaggedObject ''Nullary)
31thNullaryParseJSONTaggedObject :: Value -> Parser Nullary
32thNullaryParseJSONTaggedObject = $(mkParseJSON optsTaggedObject ''Nullary)
35thNullaryToJSONObjectWithSingleField :: Nullary -> Value
36thNullaryToJSONObjectWithSingleField = $(mkToJSON optsObjectWithSingleField ''Nullary)
38thNullaryParseJSONObjectWithSingleField :: Value -> Parser Nullary
39thNullaryParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField ''Nullary)
41#ifdef GHC_GENERICS
42gNullaryToJSONString :: Nullary -> Value
43gNullaryToJSONString = genericToJSON defaultOptions
45gNullaryParseJSONString :: Value -> Parser Nullary
46gNullaryParseJSONString = genericParseJSON defaultOptions
49gNullaryToJSON2ElemArray :: Nullary -> Value
50gNullaryToJSON2ElemArray = genericToJSON opts2ElemArray
52gNullaryParseJSON2ElemArray :: Value -> Parser Nullary
53gNullaryParseJSON2ElemArray = genericParseJSON opts2ElemArray
56gNullaryToJSONTaggedObject :: Nullary -> Value
57gNullaryToJSONTaggedObject = genericToJSON optsTaggedObject
59gNullaryParseJSONTaggedObject :: Value -> Parser Nullary
60gNullaryParseJSONTaggedObject = genericParseJSON optsTaggedObject
63gNullaryToJSONObjectWithSingleField :: Nullary -> Value
64gNullaryToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
66gNullaryParseJSONObjectWithSingleField :: Value -> Parser Nullary
67gNullaryParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
68#endif
71--------------------------------------------------------------------------------
72-- SomeType encoders/decoders
73--------------------------------------------------------------------------------
75type SomeTypeToJSON = SomeType Int -> Value
77thSomeTypeToJSON2ElemArray :: ToJSON a => SomeType a -> Value
78thSomeTypeToJSON2ElemArray = $(mkToJSON opts2ElemArray ''SomeType)
80thSomeTypeParseJSON2ElemArray :: FromJSON a => Value -> Parser (SomeType a)
81thSomeTypeParseJSON2ElemArray = $(mkParseJSON opts2ElemArray ''SomeType)
84thSomeTypeToJSONTaggedObject :: ToJSON a => SomeType a -> Value
85thSomeTypeToJSONTaggedObject = $(mkToJSON optsTaggedObject ''SomeType)
87thSomeTypeParseJSONTaggedObject :: FromJSON a => Value -> Parser (SomeType a)
88thSomeTypeParseJSONTaggedObject = $(mkParseJSON optsTaggedObject ''SomeType)
91thSomeTypeToJSONObjectWithSingleField :: ToJSON a => SomeType a -> Value
92thSomeTypeToJSONObjectWithSingleField = $(mkToJSON optsObjectWithSingleField ''SomeType)
94thSomeTypeParseJSONObjectWithSingleField :: FromJSON a => Value -> Parser (SomeType a)
95thSomeTypeParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField ''SomeType)
98#ifdef GHC_GENERICS
99gSomeTypeToJSON2ElemArray :: ToJSON a => SomeType a -> Value
100gSomeTypeToJSON2ElemArray = genericToJSON opts2ElemArray
102gSomeTypeParseJSON2ElemArray :: FromJSON a => Value -> Parser (SomeType a)
103gSomeTypeParseJSON2ElemArray = genericParseJSON opts2ElemArray
106gSomeTypeToJSONTaggedObject :: ToJSON a => SomeType a -> Value
107gSomeTypeToJSONTaggedObject = genericToJSON optsTaggedObject
109gSomeTypeParseJSONTaggedObject :: FromJSON a => Value -> Parser (SomeType a)
110gSomeTypeParseJSONTaggedObject = genericParseJSON optsTaggedObject
113gSomeTypeToJSONObjectWithSingleField :: ToJSON a => SomeType a -> Value
114gSomeTypeToJSONObjectWithSingleField = genericToJSON optsObjectWithSingleField
116gSomeTypeParseJSONObjectWithSingleField :: FromJSON a => Value -> Parser (SomeType a)
117gSomeTypeParseJSONObjectWithSingleField = genericParseJSON optsObjectWithSingleField
118#endif