git.iko.soy/typeable/derive-api-th
on master help sign in
Don't unwrap unary records by default and add omitNothingFields option (#1)
0710809Uladzimir Stsepchanka
src/Derive/API/TH.hs+4−1
@@ -67,6 +67,7 @@ data DerivingOptions = DerivingOptions
67 -- ^ Whether to snake constructors and field labels
67 -- ^ Whether to snake constructors and field labels
68 -- Applied after stripping prefix
68 -- Applied after stripping prefix
69 , unwrapUnaryRecords :: Bool
69 , unwrapUnaryRecords :: Bool
70+ , omitNothingFields :: Bool
70 , sumEncoding :: SumEncoding
71 , sumEncoding :: SumEncoding
71 } deriving (Lift)
72 } deriving (Lift)
72
73
@@ -76,7 +77,8 @@ defaultDerivingOptions :: DerivingOptions
76defaultDerivingOptions = DerivingOptions
77defaultDerivingOptions = DerivingOptions
77 { prefix = Nothing
78 { prefix = Nothing
78 , snake = True
79 , snake = True
79− , unwrapUnaryRecords = True
80+ , unwrapUnaryRecords = False
81+ , omitNothingFields = False
80 , sumEncoding = defaultTaggedObject }
82 , sumEncoding = defaultTaggedObject }
81
83
82derivingOptionsToJsonOptions :: DerivingOptions -> Options
84derivingOptionsToJsonOptions :: DerivingOptions -> Options
@@ -84,6 +86,7 @@ derivingOptionsToJsonOptions DerivingOptions{..} = defaultOptions
84 { fieldLabelModifier = snaked . stripped
86 { fieldLabelModifier = snaked . stripped
85 , constructorTagModifier = snaked . stripped
87 , constructorTagModifier = snaked . stripped
86 , sumEncoding
88 , sumEncoding
89+ , omitNothingFields
87 , unwrapUnaryRecords }
90 , unwrapUnaryRecords }
88 where
91 where
89 snaked = if snake then camelTo2 '_' else id
92 snaked = if snake then camelTo2 '_' else id