debug-print 0.2.0.1 → 0.2.1.0
raw patch · 3 files changed
+62/−15 lines, 3 filesdep +scientificPVP ok
version bump matches the API change (PVP)
Dependencies added: scientific
API changes (from Hackage documentation)
Files
- CHANGELOG.md +14/−1
- debug-print.cabal +15/−13
- internal/DebugPrint/Core.hs +33/−1
CHANGELOG.md view
@@ -1,4 +1,17 @@-## [_Unreleased_](https://github.com/freckle/debug-print/compare/v0.2.0.1...main)+## [_Unreleased_](https://github.com/freckle/debug-print/compare/v0.2.1.0...main)++## [v0.2.1.0](https://github.com/freckle/debug-print/compare/v0.2.0.1...v0.2.1.0)++Add instances for `aeson` types:++- `instance ToDebugPrintValue Key`+- `instance ToDebugPrintValue Value`+- `instance ToDebugPrintValue Object`+- `instance ToDebugPrintRecord Object`++Adds `Eq` and `Ord` instances for `ToDebugPrintValue` and `ToDebugPrintRecord`++Add `instance ToDebugPrintValue DebugPrintRecord` ## [v0.2.0.1](https://github.com/freckle/debug-print/compare/v0.2.0.0...v0.2.0.1)
debug-print.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.0 name: debug-print-version: 0.2.0.1+version: 0.2.1.0 license: MIT license-file: LICENSE maintainer: Freckle Education@@ -32,9 +32,9 @@ autogen-modules: Paths_debug_print default-language: GHC2021 default-extensions:- DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors- NoImplicitPrelude NoMonomorphismRestriction OverloadedStrings- StrictData+ DefaultSignatures DeriveAnyClass DerivingVia LambdaCase+ NoFieldSelectors NoImplicitPrelude NoMonomorphismRestriction+ OverloadedStrings StrictData ghc-options: -Weverything -Wno-all-missed-specialisations@@ -59,9 +59,9 @@ autogen-modules: Paths_debug_print default-language: GHC2021 default-extensions:- DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors- NoImplicitPrelude NoMonomorphismRestriction OverloadedStrings- StrictData+ DefaultSignatures DeriveAnyClass DerivingVia LambdaCase+ NoFieldSelectors NoImplicitPrelude NoMonomorphismRestriction+ OverloadedStrings StrictData ghc-options: -Weverything -Wno-all-missed-specialisations@@ -69,8 +69,10 @@ -Wno-missing-safe-haskell-mode -Wno-safe -Wno-unsafe build-depends:+ aeson >=2.1.2.1, base >=4.17.2.1 && <5, containers >=0.6.7,+ scientific >=0.3.7.0, text >=2.0.2, vector >=0.13.1.0 @@ -85,9 +87,9 @@ autogen-modules: Paths_debug_print default-language: GHC2021 default-extensions:- DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors- NoImplicitPrelude NoMonomorphismRestriction OverloadedStrings- StrictData+ DefaultSignatures DeriveAnyClass DerivingVia LambdaCase+ NoFieldSelectors NoImplicitPrelude NoMonomorphismRestriction+ OverloadedStrings StrictData ghc-options: -Weverything -Wno-all-missed-specialisations@@ -115,9 +117,9 @@ autogen-modules: Paths_debug_print default-language: GHC2021 default-extensions:- DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors- NoImplicitPrelude NoMonomorphismRestriction OverloadedStrings- StrictData+ DefaultSignatures DeriveAnyClass DerivingVia LambdaCase+ NoFieldSelectors NoImplicitPrelude NoMonomorphismRestriction+ OverloadedStrings StrictData ghc-options: -Weverything -Wno-all-missed-specialisations
internal/DebugPrint/Core.hs view
@@ -11,12 +11,16 @@ import Prelude +import Data.Aeson qualified as Aeson+import Data.Aeson.Key qualified as Aeson.Key+import Data.Aeson.KeyMap qualified as Aeson.KeyMap import Data.Foldable (toList) import Data.Int import Data.Kind (Type) import Data.List.NonEmpty (NonEmpty) import Data.Map (Map) import Data.Map.Strict qualified as Map+import Data.Scientific qualified as Scientific import Data.Sequence (Seq) import Data.String (IsString (..)) import Data.Text (Text)@@ -29,7 +33,7 @@ import Numeric.Natural (Natural) newtype DebugPrintRecord = DebugPrintRecord (Map Text DebugPrintValue)- deriving newtype (Monoid, Semigroup)+ deriving newtype (Eq, Monoid, Ord, Semigroup) data DebugPrintValue = DebugPrintValueInt Integer@@ -37,6 +41,7 @@ | DebugPrintValueBool Bool | DebugPrintValueVector (Vector DebugPrintValue) | DebugPrintValueRecord DebugPrintRecord+ deriving stock (Eq, Ord) instance IsString DebugPrintValue where fromString = DebugPrintValueText . T.pack@@ -52,6 +57,9 @@ instance ToDebugPrintValue DebugPrintValue where toDebugPrintValue = id +instance ToDebugPrintValue DebugPrintRecord where+ toDebugPrintValue = DebugPrintValueRecord+ instance ToDebugPrintValue Integer where toDebugPrintValue = DebugPrintValueInt @@ -94,6 +102,27 @@ instance ToDebugPrintValue a => ToDebugPrintValue (Vector a) where toDebugPrintValue = DebugPrintValueVector . fmap toDebugPrintValue +instance ToDebugPrintValue Aeson.Key where+ toDebugPrintValue = DebugPrintValueText . Aeson.Key.toText++instance ToDebugPrintValue Aeson.Value where+ toDebugPrintValue = \case+ Aeson.Object x -> DebugPrintValueRecord $ toDebugPrintRecord x+ Aeson.Array x -> DebugPrintValueVector $ fmap toDebugPrintValue x+ Aeson.String x -> DebugPrintValueText $ T.unwords ["(string)", x]+ Aeson.Number x ->+ -- Since JSON numbers support scientific notation, an exponential form may+ -- represent an unreasonably large integer. Int64 is an arbitrary limit on+ -- the size of integer we're willing to expand.+ case Scientific.toBoundedInteger @Int64 x of+ Just i -> DebugPrintValueInt $ toInteger i+ Nothing -> DebugPrintValueText $ T.unwords ["(number)", T.pack $ show x]+ Aeson.Bool x -> DebugPrintValueBool x+ Aeson.Null -> DebugPrintValueText "(null)"++instance ToDebugPrintValue Aeson.Object where+ toDebugPrintValue = DebugPrintValueRecord . toDebugPrintRecord+ --- class ToDebugPrintRecord a where@@ -104,6 +133,9 @@ instance ToDebugPrintRecord DebugPrintRecord where toDebugPrintRecord = id++instance ToDebugPrintRecord Aeson.Object where+ toDebugPrintRecord = DebugPrintRecord . fmap toDebugPrintValue . Aeson.KeyMap.toMapText ---