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