1{-# LANGUAGE NoImplicitPrelude #-}
2
3module Options (module Options) where
4
5import Prelude.Compat
6
7import Data.Aeson.Types
8import Data.Char
9
10optsDefault :: Options
11optsDefault = defaultOptions
12              { fieldLabelModifier     = map toLower
13              , constructorTagModifier = map toLower
14              }
15
16opts2ElemArray :: Options
17opts2ElemArray = optsDefault
18                 { allNullaryToStringTag = False
19                 , sumEncoding     = TwoElemArray
20                 }
21
22optsUnwrapUnaryRecords :: Options
23optsUnwrapUnaryRecords = optsDefault
24                         { unwrapUnaryRecords = True
25                         }
26
27optsTaggedObject :: Options
28optsTaggedObject = optsDefault
29                   { allNullaryToStringTag = False }
30
31optsObjectWithSingleField :: Options
32optsObjectWithSingleField = optsDefault
33                            { allNullaryToStringTag = False
34                            , sumEncoding           = ObjectWithSingleField
35                            }
36
37optsOmitNothingFields :: Options
38optsOmitNothingFields = optsDefault
39                        { omitNothingFields = True
40                        }
41
42optsUntaggedValue :: Options
43optsUntaggedValue = optsDefault
44    { sumEncoding = UntaggedValue
45    }
46
47optsTagSingleConstructors :: Options
48optsTagSingleConstructors = optsDefault
49                            { tagSingleConstructors = True
50                            , allNullaryToStringTag = False
51                            }
52
53optsOptionField :: Options
54optsOptionField = optsDefault
55                  { fieldLabelModifier = const "field"
56                  , omitNothingFields = True
57                  }
58
59optsRejectUnknownFields :: Options
60optsRejectUnknownFields = optsDefault
61                          { rejectUnknownFields = True
62                          }
63
64optsRejectUnknownFieldsTagged :: Options
65optsRejectUnknownFieldsTagged = optsDefault
66                                { rejectUnknownFields = True
67                                , tagSingleConstructors = True
68                                }
69