on 0.11.2.0-r2 help sign in
138 lines 5.2 kB history raw
1{-# LANGUAGE GADTs #-}
2{-# LANGUAGE TemplateHaskell #-}
4module DataFamilies.Encoders where
6import Data.Aeson.TH
7import Data.Aeson.Types
8import Options
9import DataFamilies.Types
11--------------------------------------------------------------------------------
12-- Nullary encoders/decoders
13--------------------------------------------------------------------------------
15thNullaryToJSONString :: Nullary Int -> Value
16thNullaryToJSONString = $(mkToJSON defaultOptions 'C1)
18thNullaryToEncodingString :: Nullary Int -> Encoding
19thNullaryToEncodingString = $(mkToEncoding defaultOptions 'C2)
21thNullaryParseJSONString :: Value -> Parser (Nullary Int)
22thNullaryParseJSONString = $(mkParseJSON defaultOptions 'C3)
25thNullaryToJSON2ElemArray :: Nullary Int -> Value
26thNullaryToJSON2ElemArray = $(mkToJSON opts2ElemArray 'C1)
28thNullaryToEncoding2ElemArray :: Nullary Int -> Encoding
29thNullaryToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'C2)
31thNullaryParseJSON2ElemArray :: Value -> Parser (Nullary Int)
32thNullaryParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'C3)
35thNullaryToJSONTaggedObject :: Nullary Int -> Value
36thNullaryToJSONTaggedObject = $(mkToJSON optsTaggedObject 'C1)
38thNullaryToEncodingTaggedObject :: Nullary Int -> Encoding
39thNullaryToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'C2)
41thNullaryParseJSONTaggedObject :: Value -> Parser (Nullary Int)
42thNullaryParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'C3)
45thNullaryToJSONObjectWithSingleField :: Nullary Int -> Value
46thNullaryToJSONObjectWithSingleField =
47 $(mkToJSON optsObjectWithSingleField 'C1)
49thNullaryToEncodingObjectWithSingleField :: Nullary Int -> Encoding
50thNullaryToEncodingObjectWithSingleField =
51 $(mkToEncoding optsObjectWithSingleField 'C2)
53thNullaryParseJSONObjectWithSingleField :: Value -> Parser (Nullary Int)
54thNullaryParseJSONObjectWithSingleField = $(mkParseJSON optsObjectWithSingleField 'C3)
57--------------------------------------------------------------------------------
58-- SomeType encoders/decoders
59--------------------------------------------------------------------------------
61thSomeTypeToJSON2ElemArray :: SomeType c () Int -> Value
62thSomeTypeToJSON2ElemArray = $(mkToJSON opts2ElemArray 'Nullary)
64thSomeTypeToEncoding2ElemArray :: SomeType c () Int -> Encoding
65thSomeTypeToEncoding2ElemArray = $(mkToEncoding opts2ElemArray 'Unary)
67thSomeTypeParseJSON2ElemArray :: Value -> Parser (SomeType c () Int)
68thSomeTypeParseJSON2ElemArray = $(mkParseJSON opts2ElemArray 'Product)
71thSomeTypeToJSONTaggedObject :: SomeType c () Int -> Value
72thSomeTypeToJSONTaggedObject = $(mkToJSON optsTaggedObject 'Record)
74thSomeTypeToEncodingTaggedObject :: SomeType c () Int -> Encoding
75thSomeTypeToEncodingTaggedObject = $(mkToEncoding optsTaggedObject 'Nullary)
77thSomeTypeParseJSONTaggedObject :: Value -> Parser (SomeType c () Int)
78thSomeTypeParseJSONTaggedObject = $(mkParseJSON optsTaggedObject 'Unary)
81thSomeTypeToJSONObjectWithSingleField :: SomeType c () Int -> Value
82thSomeTypeToJSONObjectWithSingleField =
83 $(mkToJSON optsObjectWithSingleField 'Product)
85thSomeTypeToEncodingObjectWithSingleField :: SomeType c () Int -> Encoding
86thSomeTypeToEncodingObjectWithSingleField =
87 $(mkToEncoding optsObjectWithSingleField 'Record)
89thSomeTypeParseJSONObjectWithSingleField :: Value -> Parser (SomeType c () Int)
90thSomeTypeParseJSONObjectWithSingleField =
91 $(mkParseJSON optsObjectWithSingleField 'Nullary)
94--------------------------------------------------------------------------------
95-- Approx encoders/decoders
96--------------------------------------------------------------------------------
98thApproxToJSONUnwrap :: Approx String -> Value
99thApproxToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords 'Approx)
101thApproxToEncodingUnwrap :: Approx String -> Encoding
102thApproxToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords 'Approx)
104thApproxParseJSONUnwrap :: Value -> Parser (Approx String)
105thApproxParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords 'Approx)
108thApproxToJSONDefault :: Approx String -> Value
109thApproxToJSONDefault = $(mkToJSON defaultOptions 'Approx)
111thApproxToEncodingDefault :: Approx String -> Encoding
112thApproxToEncodingDefault = $(mkToEncoding defaultOptions 'Approx)
114thApproxParseJSONDefault :: Value -> Parser (Approx String)
115thApproxParseJSONDefault = $(mkParseJSON defaultOptions 'Approx)
117--------------------------------------------------------------------------------
118-- GADT encoders/decoders
119--------------------------------------------------------------------------------
121thGADTToJSONUnwrap :: GADT String -> Value
122thGADTToJSONUnwrap = $(mkToJSON optsUnwrapUnaryRecords 'GADT)
124thGADTToEncodingUnwrap :: GADT String -> Encoding
125thGADTToEncodingUnwrap = $(mkToEncoding optsUnwrapUnaryRecords 'GADT)
127thGADTParseJSONUnwrap :: Value -> Parser (GADT String)
128thGADTParseJSONUnwrap = $(mkParseJSON optsUnwrapUnaryRecords 'GADT)
131thGADTToJSONDefault :: GADT String -> Value
132thGADTToJSONDefault = $(mkToJSON defaultOptions 'GADT)
134thGADTToEncodingDefault :: GADT String -> Encoding
135thGADTToEncodingDefault = $(mkToEncoding defaultOptions 'GADT)
137thGADTParseJSONDefault :: Value -> Parser (GADT String)
138thGADTParseJSONDefault = $(mkParseJSON defaultOptions 'GADT)