packages feed

debug-print 0.0.0.0 → 0.1.0.0

raw patch · 7 files changed

+205/−133 lines, 7 files

Files

CHANGELOG.md view
@@ -1,4 +1,12 @@-## [_Unreleased_](https://github.com/freckle/debug-print/compare/v0.0.0.0...main)+## [_Unreleased_](https://github.com/freckle/debug-print/compare/v0.1.0.0...main)++## [v0.1.0.0](https://github.com/freckle/nonempty-zipper/compare/v0.0.0.0...v0.1.0.0)++The parameter of `DebugPrintValueInt` is changed from `Int` to `Integer`.++Added `ToDebugPrintValue` instances for various numeric types.++Adds the `DebugInteger` newtype for deriving-via.  ## [v0.0.0.0](https://github.com/freckle/debug-print/tree/v0.0.0.0) 
debug-print.cabal view
@@ -1,6 +1,6 @@-cabal-version:   1.18+cabal-version:   2.0 name:            debug-print-version:         0.0.0.0+version:         0.1.0.0 license:         MIT license-file:    LICENSE maintainer:      Freckle Education@@ -22,12 +22,14 @@         DebugPrint         DebugPrint.Aeson         DebugPrint.Class+        DebugPrint.Integer         DebugPrint.Show         DebugPrint.Tagged         DebugPrint.Types      hs-source-dirs:     library     other-modules:      Paths_debug_print+    autogen-modules:    Paths_debug_print     default-language:   GHC2021     default-extensions:         DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors@@ -43,6 +45,32 @@         aeson >=2.2.3.0,         base >=4.19.2.0 && <5,         containers >=0.6.8,+        internal,+        text >=2.1.1++    if impl(ghc >=9.8)+        ghc-options:+            -Wno-missing-role-annotations -Wno-missing-poly-kind-signatures++library internal+    exposed-modules:    DebugPrint.Core+    hs-source-dirs:     internal+    other-modules:      Paths_debug_print+    autogen-modules:    Paths_debug_print+    default-language:   GHC2021+    default-extensions:+        DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors+        NoImplicitPrelude NoMonomorphismRestriction OverloadedStrings+        StrictData++    ghc-options:+        -Weverything -Wno-all-missed-specialisations+        -Wno-missing-import-lists -Wno-missing-kind-signatures+        -Wno-missing-safe-haskell-mode -Wno-safe -Wno-unsafe++    build-depends:+        base >=4.19.2.0 && <5,+        containers >=0.6.8,         text >=2.1.1,         vector >=0.13.2.0 @@ -54,6 +82,7 @@     type:               exitcode-stdio-1.0     main-is:            README.lhs     other-modules:      Paths_debug_print+    autogen-modules:    Paths_debug_print     default-language:   GHC2021     default-extensions:         DefaultSignatures DeriveAnyClass DerivingVia NoFieldSelectors
+ internal/DebugPrint/Core.hs view
@@ -0,0 +1,157 @@+module DebugPrint.Core+  ( DebugPrintRecord (..)+  , DebugPrintValue (..)+  , ToDebugPrintValue (..)+  , ToDebugPrintRecord (..)+  , ToDebugPrintValueRep+  , ToDebugPrintRecordRep+  , DebugInteger (..)+  , DebugShow (..)+  ) where++import Prelude++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.Sequence (Seq)+import Data.String (IsString (..))+import Data.Text (Text)+import Data.Text qualified as T+import Data.Text.Lazy qualified as TL+import Data.Vector (Vector)+import Data.Vector qualified as V+import Data.Word+import GHC.Generics+import Numeric.Natural (Natural)++newtype DebugPrintRecord = DebugPrintRecord (Map Text DebugPrintValue)+  deriving newtype (Monoid, Semigroup)++data DebugPrintValue+  = DebugPrintValueInt Integer+  | DebugPrintValueText Text+  | DebugPrintValueBool Bool+  | DebugPrintValueVector (Vector DebugPrintValue)+  | DebugPrintValueRecord DebugPrintRecord++instance IsString DebugPrintValue where+  fromString = DebugPrintValueText . T.pack++---++class ToDebugPrintValue a where+  toDebugPrintValue :: a -> DebugPrintValue+  default toDebugPrintValue+    :: (Generic a, ToDebugPrintRecordRep (Rep a)) => a -> DebugPrintValue+  toDebugPrintValue = DebugPrintValueRecord . gToRecord . from++instance ToDebugPrintValue DebugPrintValue where+  toDebugPrintValue = id++instance ToDebugPrintValue Integer where+  toDebugPrintValue = DebugPrintValueInt++deriving via DebugInteger (Natural) instance ToDebugPrintValue Natural+deriving via DebugInteger (Int) instance ToDebugPrintValue Int+deriving via DebugInteger (Int8) instance ToDebugPrintValue Int8+deriving via DebugInteger (Int16) instance ToDebugPrintValue Int16+deriving via DebugInteger (Int32) instance ToDebugPrintValue Int32+deriving via DebugInteger (Int64) instance ToDebugPrintValue Int64+deriving via DebugInteger (Word) instance ToDebugPrintValue Word+deriving via DebugInteger (Word8) instance ToDebugPrintValue Word8+deriving via DebugInteger (Word16) instance ToDebugPrintValue Word16+deriving via DebugInteger (Word32) instance ToDebugPrintValue Word32+deriving via DebugInteger (Word64) instance ToDebugPrintValue Word64++instance ToDebugPrintValue Char where+  toDebugPrintValue = DebugPrintValueText . T.singleton++instance ToDebugPrintValue T.Text where+  toDebugPrintValue = DebugPrintValueText++instance ToDebugPrintValue TL.Text where+  toDebugPrintValue = DebugPrintValueText . TL.toStrict++instance ToDebugPrintValue Bool where+  toDebugPrintValue = DebugPrintValueBool++instance ToDebugPrintValue a => ToDebugPrintValue (Maybe a) where+  toDebugPrintValue = toDebugPrintValue . toList++instance ToDebugPrintValue a => ToDebugPrintValue [a] where+  toDebugPrintValue = toDebugPrintValue . V.fromList++instance ToDebugPrintValue a => ToDebugPrintValue (NonEmpty a) where+  toDebugPrintValue = toDebugPrintValue . toList++instance ToDebugPrintValue a => ToDebugPrintValue (Seq a) where+  toDebugPrintValue = toDebugPrintValue . toList++instance ToDebugPrintValue a => ToDebugPrintValue (Vector a) where+  toDebugPrintValue = DebugPrintValueVector . fmap toDebugPrintValue++---++class ToDebugPrintRecord a where+  toDebugPrintRecord :: a -> DebugPrintRecord+  default toDebugPrintRecord+    :: (Generic a, ToDebugPrintRecordRep (Rep a)) => a -> DebugPrintRecord+  toDebugPrintRecord = gToRecord . from++instance ToDebugPrintRecord DebugPrintRecord where+  toDebugPrintRecord = id++---++class ToDebugPrintValueRep (f :: Type -> Type) where+  gToValue :: f a -> DebugPrintValue++instance ToDebugPrintValue a => ToDebugPrintValueRep (K1 i a) where+  gToValue (K1 x) = toDebugPrintValue x++---++class ToDebugPrintRecordRep (f :: Type -> Type) where+  gToRecord :: f a -> DebugPrintRecord++instance ToDebugPrintRecordRep U1 where+  gToRecord _ = DebugPrintRecord mempty++instance+  (ToDebugPrintRecordRep f, ToDebugPrintRecordRep g)+  => ToDebugPrintRecordRep (f :*: g)+  where+  gToRecord (x :*: y) = gToRecord x <> gToRecord y++instance ToDebugPrintRecordRep f => ToDebugPrintRecordRep (D1 i f) where+  gToRecord (M1 x) = gToRecord x++instance ToDebugPrintRecordRep f => ToDebugPrintRecordRep (C1 i f) where+  gToRecord (M1 x) = gToRecord x++instance (Selector s, ToDebugPrintValueRep f) => ToDebugPrintRecordRep (S1 s f) where+  gToRecord s1@(M1 x) = DebugPrintRecord $ Map.singleton (T.pack (selName s1)) (gToValue x)++---++-- | For use with deriving-via, provides a simple 'ToDebugPrintValue'+--   instance based on 'Show' which renders as text+newtype DebugShow a = DebugShow a++instance Show a => ToDebugPrintValue (DebugShow a) where+  toDebugPrintValue (DebugShow x) =+    toDebugPrintValue $ T.pack $ show x++---++-- | For use with deriving-via, provides a simple 'ToDebugPrintValue'+--   instance based on 'toInteger' which renders as an integer+newtype DebugInteger a = DebugInteger a++instance Integral a => ToDebugPrintValue (DebugInteger a) where+  toDebugPrintValue (DebugInteger x) =+    toDebugPrintValue $ toInteger x
library/DebugPrint/Class.hs view
@@ -9,101 +9,4 @@   , ToDebugPrintRecordRep   ) where -import Prelude--import Data.Foldable (toList)-import Data.Kind (Type)-import Data.List.NonEmpty (NonEmpty)-import Data.Map.Strict qualified as Map-import Data.Sequence (Seq)-import Data.Text qualified as T-import Data.Text.Lazy qualified as TL-import Data.Vector (Vector)-import Data.Vector qualified as V-import DebugPrint.Types-import GHC.Generics-import Numeric.Natural (Natural)--class ToDebugPrintValue a where-  toDebugPrintValue :: a -> DebugPrintValue-  default toDebugPrintValue-    :: (Generic a, ToDebugPrintRecordRep (Rep a)) => a -> DebugPrintValue-  toDebugPrintValue = DebugPrintValueRecord . gToRecord . from--instance ToDebugPrintValue DebugPrintValue where-  toDebugPrintValue = id--instance ToDebugPrintValue Int where-  toDebugPrintValue = DebugPrintValueInt--instance ToDebugPrintValue Char where-  toDebugPrintValue = DebugPrintValueText . T.singleton--instance ToDebugPrintValue Natural where-  toDebugPrintValue = DebugPrintValueInt . fromIntegral--instance ToDebugPrintValue T.Text where-  toDebugPrintValue = DebugPrintValueText--instance ToDebugPrintValue TL.Text where-  toDebugPrintValue = DebugPrintValueText . TL.toStrict--instance ToDebugPrintValue Bool where-  toDebugPrintValue = DebugPrintValueBool--instance ToDebugPrintValue a => ToDebugPrintValue (Maybe a) where-  toDebugPrintValue = toDebugPrintValue . toList--instance ToDebugPrintValue a => ToDebugPrintValue [a] where-  toDebugPrintValue = toDebugPrintValue . V.fromList--instance ToDebugPrintValue a => ToDebugPrintValue (NonEmpty a) where-  toDebugPrintValue = toDebugPrintValue . toList--instance ToDebugPrintValue a => ToDebugPrintValue (Seq a) where-  toDebugPrintValue = toDebugPrintValue . toList--instance ToDebugPrintValue a => ToDebugPrintValue (Vector a) where-  toDebugPrintValue = DebugPrintValueVector . fmap toDebugPrintValue-------class ToDebugPrintRecord a where-  toDebugPrintRecord :: a -> DebugPrintRecord-  default toDebugPrintRecord-    :: (Generic a, ToDebugPrintRecordRep (Rep a)) => a -> DebugPrintRecord-  toDebugPrintRecord = gToRecord . from--instance ToDebugPrintRecord DebugPrintRecord where-  toDebugPrintRecord = id-------class ToDebugPrintValueRep (f :: Type -> Type) where-  gToValue :: f a -> DebugPrintValue--instance ToDebugPrintValue a => ToDebugPrintValueRep (K1 i a) where-  gToValue (K1 x) = toDebugPrintValue x-------class ToDebugPrintRecordRep (f :: Type -> Type) where-  gToRecord :: f a -> DebugPrintRecord--instance ToDebugPrintRecordRep U1 where-  gToRecord _ = DebugPrintRecord mempty--instance-  (ToDebugPrintRecordRep f, ToDebugPrintRecordRep g)-  => ToDebugPrintRecordRep (f :*: g)-  where-  gToRecord (x :*: y) = gToRecord x <> gToRecord y--instance ToDebugPrintRecordRep f => ToDebugPrintRecordRep (D1 i f) where-  gToRecord (M1 x) = gToRecord x--instance ToDebugPrintRecordRep f => ToDebugPrintRecordRep (C1 i f) where-  gToRecord (M1 x) = gToRecord x--instance (Selector s, ToDebugPrintValueRep f) => ToDebugPrintRecordRep (S1 s f) where-  gToRecord s1@(M1 x) = DebugPrintRecord $ Map.singleton (T.pack (selName s1)) (gToValue x)+import DebugPrint.Core
+ library/DebugPrint/Integer.hs view
@@ -0,0 +1,5 @@+module DebugPrint.Integer+  ( DebugInteger (..)+  ) where++import DebugPrint.Core
library/DebugPrint/Show.hs view
@@ -2,15 +2,4 @@   ( DebugShow (..)   ) where -import Prelude--import Data.Text qualified as T-import DebugPrint.Class---- | For use with deriving-via, provides a simple 'ToDebugPrintValue'---   instance based on 'Show' which renders as text-newtype DebugShow a = DebugShow a--instance Show a => ToDebugPrintValue (DebugShow a) where-  toDebugPrintValue (DebugShow x) =-    toDebugPrintValue $ T.pack $ show x+import DebugPrint.Core
library/DebugPrint/Types.hs view
@@ -7,23 +7,4 @@   , DebugPrintValue (..)   ) where -import Prelude--import Data.Map (Map)-import Data.String (IsString (..))-import Data.Text (Text)-import Data.Text qualified as T-import Data.Vector (Vector)--newtype DebugPrintRecord = DebugPrintRecord (Map Text DebugPrintValue)-  deriving newtype (Monoid, Semigroup)--data DebugPrintValue-  = DebugPrintValueInt Int-  | DebugPrintValueText Text-  | DebugPrintValueBool Bool-  | DebugPrintValueVector (Vector DebugPrintValue)-  | DebugPrintValueRecord DebugPrintRecord--instance IsString DebugPrintValue where-  fromString = DebugPrintValueText . T.pack+import DebugPrint.Core