packages feed

autodocodec 0.4.2.0 → 0.4.2.1

raw patch · 5 files changed

+73/−1 lines, 5 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Autodocodec: optionalFieldOrNullWithDefault :: (Eq output, HasCodec output) => Text -> output -> Text -> ObjectCodec output output
+ Autodocodec: optionalFieldOrNullWithDefault' :: (Eq output, HasCodec output) => Text -> output -> ObjectCodec output output
+ Autodocodec: optionalFieldOrNullWithDefaultWith :: Eq output => Text -> JSONCodec output -> output -> Text -> ObjectCodec output output
+ Autodocodec: optionalFieldOrNullWithDefaultWith' :: Eq output => Text -> JSONCodec output -> output -> ObjectCodec output output
+ Autodocodec.Class: optionalFieldOrNullWithDefault :: (Eq output, HasCodec output) => Text -> output -> Text -> ObjectCodec output output
+ Autodocodec.Class: optionalFieldOrNullWithDefault' :: (Eq output, HasCodec output) => Text -> output -> ObjectCodec output output
+ Autodocodec.Codec: optionalFieldOrNullWithDefaultWith :: Eq output => Text -> JSONCodec output -> output -> Text -> ObjectCodec output output
+ Autodocodec.Codec: optionalFieldOrNullWithDefaultWith' :: Eq output => Text -> JSONCodec output -> output -> ObjectCodec output output

Files

CHANGELOG.md view
@@ -1,5 +1,14 @@ # Changelog +## [0.4.2.1] - 2024-08-21++### Added++* `optionalFieldOrNullWithDefault`+* `optionalFieldOrNullWithDefaultWith`+* `optionalFieldOrNullWithDefault'`+* `optionalFieldOrNullWithDefaultWith'`+ ## [0.4.2.0] - 2024-08-06  ### Added
autodocodec.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           autodocodec-version:        0.4.2.0+version:        0.4.2.1 synopsis:       Self-documenting encoder and decoder homepage:       https://github.com/NorfairKing/autodocodec#readme bug-reports:    https://github.com/NorfairKing/autodocodec/issues
src/Autodocodec.hs view
@@ -48,6 +48,8 @@     optionalFieldWith,     optionalFieldOrNullWith,     optionalFieldWithDefaultWith,+    optionalFieldOrNullWithDefault,+    optionalFieldOrNullWithDefaultWith,     optionalFieldWithOmittedDefault,     optionalFieldWithOmittedDefaultWith,     optionalFieldOrNullWithOmittedDefault,@@ -62,6 +64,8 @@     optionalFieldWith',     optionalFieldOrNullWith',     optionalFieldWithDefaultWith',+    optionalFieldOrNullWithDefault',+    optionalFieldOrNullWithDefaultWith',     optionalFieldWithOmittedDefault',     optionalFieldWithOmittedDefaultWith',     optionalFieldOrNullWithOmittedDefault',
src/Autodocodec/Class.hs view
@@ -289,6 +289,28 @@   ObjectCodec output output optionalFieldWithDefault' key defaultValue = optionalFieldWithDefaultWith' key codec defaultValue +-- | Like 'optionalFieldOrNull', but also interpret @null@ as the default value.+optionalFieldOrNullWithDefault ::+  (Eq output, HasCodec output) =>+  -- | Key+  Text ->+  -- | Default value+  output ->+  -- | Documentation+  Text ->+  ObjectCodec output output+optionalFieldOrNullWithDefault key defaultValue doc = optionalFieldOrNullWithDefaultWith key codec defaultValue doc++-- | Like 'optionalFieldOrNullWithDefault', but without documentation+optionalFieldOrNullWithDefault' ::+  (Eq output, HasCodec output) =>+  -- | Key+  Text ->+  -- | Default value+  output ->+  ObjectCodec output output+optionalFieldOrNullWithDefault' key defaultValue = optionalFieldOrNullWithDefaultWith' key codec defaultValue+ -- | An optional, or null, field -- -- During decoding, the field may be in the object. 'Nothing' will be parsed if it is not.
src/Autodocodec/Codec.hs view
@@ -1062,6 +1062,43 @@   ObjectCodec output output optionalFieldWithDefaultWith' key c defaultValue = OptionalKeyWithDefaultCodec key c defaultValue Nothing +-- | Like 'optionalFieldWithDefaultWith', but also interpret @null@ as the+-- default value.+optionalFieldOrNullWithDefaultWith ::+  (Eq output) =>+  -- | Key+  Text ->+  -- | Codec for the value+  JSONCodec output ->+  -- | Default value+  output ->+  -- | Documentation+  Text ->+  ObjectCodec output output+optionalFieldOrNullWithDefaultWith key c defaultValue doc = dimapCodec f g $ optionalFieldWithDefaultWith key (maybeCodec c) (Just defaultValue) doc+  where+    f = \case+      Just v -> v+      Nothing -> defaultValue+    g v = if v == defaultValue then Nothing else Just v++-- | Like 'optionalFieldOrNullWithDefaultWith', but without documentation.+optionalFieldOrNullWithDefaultWith' ::+  (Eq output) =>+  -- | Key+  Text ->+  -- | Codec for the value+  JSONCodec output ->+  -- | Default value+  output ->+  ObjectCodec output output+optionalFieldOrNullWithDefaultWith' key c defaultValue = dimapCodec f g $ optionalFieldWithDefaultWith' key (maybeCodec c) (Just defaultValue)+  where+    f = \case+      Just v -> v+      Nothing -> defaultValue+    g v = if v == defaultValue then Nothing else Just v+ -- | An optional field with default value that can be omitted when encoding -- -- During decoding, the field may be in the object. The default value will be parsed otherwise.