packages feed

describe 0.4.0.0 → 0.4.0.1

raw patch · 6 files changed

+52/−26 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Serialize.Describe.Descriptor: lookAhead :: () => Get a -> Get a
+ Data.Serialize.Describe.Class: type Context m a = ();
+ Data.Serialize.Describe.Class: }
+ Data.Serialize.Describe.Descriptor: conditionally :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => (s -> Maybe a) -> (a -> Bool) -> DescriptorM m a a -> DescriptorM m s (Maybe a)
- Data.Serialize.Describe.Class: class Describe a
+ Data.Serialize.Describe.Class: class Describe a where {
- Data.Serialize.Describe.Class: describe :: (Describe a, MonadTrans m, forall x. Monad x => Monad (m x), Context m a) => DescriptorM m a a
+ Data.Serialize.Describe.Class: describe :: (Describe a, Generic a, GDescribe (Rep a), MonadTrans m, forall x. Monad x => Monad (m x)) => DescriptorM m a a
- Data.Serialize.Describe.Class: type family Context (m :: (* -> *) -> * -> *) a :: Constraint
+ Data.Serialize.Describe.Class: type family Context (m :: (* -> *) -> * -> *) a :: Constraint;

Files

CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for describe +##0.4.0.1 -- 2020-01-19++* Fixed module exports+* Updated docs+ ##0.4.0.0 -- 2020-01-19  * Added lens isomorphism utilities
describe.cabal view
@@ -1,13 +1,13 @@ cabal-version:       2.4 name:                describe-version:             0.4.0.0+version:             0.4.0.1 synopsis:            Combinators for describing binary data structures description:         Combinators for describing binary data structures, which eliminate the boilerplate of having to write isomorphic Get and Put instances. Please see the Github page for examples. homepage:            https://github.com/riugabachi/describe license:             BSD-3-Clause license-file:        LICENSE author:              Riuga-maintainer:          n/a+maintainer:          Riuga category:            Data extra-source-files:  CHANGELOG.md 
src/Data/Serialize/Describe/Class.hs view
@@ -1,5 +1,5 @@ module Data.Serialize.Describe.Class(-  Describe, Context, describe,+  Describe(..),   field, isoField ) where @@ -25,6 +25,7 @@ import Data.Serialize.Describe.Isomorphisms  class Describe a where+  {-# MINIMAL #-}   type Context (m :: (* -> *) -> * -> *) a :: Constraint    type Context m a = ()  @@ -38,13 +39,15 @@   describe = morphTransformer (lift . runIdentityT) $ dimap from to gdescribe  -- | A descriptor from structure to field.-field :: forall a m s. ( Describe a-                       , MonadTrans m-                       , forall x. Monad x => Monad (m x)-                       , Context m a-                       )-      => (s -> a) -      -> DescriptorM m s a+field +  :: forall a m s. +      ( Describe a+      , MonadTrans m+      , forall x. Monad x => Monad (m x)+      , Context m a+      )+  => (s -> a) +  -> DescriptorM m s a field f = morphRef f describe  -- | Similar to @field@, but applied to an isomorphism.
src/Data/Serialize/Describe/Combinators/ByteEnum.hs view
@@ -8,10 +8,9 @@ import Data.Serialize.Describe.Isomorphisms  -- | Wraps an @Enum@ to be described as a Word8. Intended to be used with DerivingVia so as to not introduce unnecessary newtype wrappers:--- >>>---  data MyEnum = A | B | C ---              deriving Enum---              deriving Describe via ByteEnum MyEnum+-- > data MyEnum = A | B | C +-- >             deriving Enum+-- >             deriving Describe via ByteEnum MyEnum newtype ByteEnum e    = ByteEnum { unwrapByteEnum :: e }   deriving (Generic)
src/Data/Serialize/Describe/Descriptor.hs view
@@ -12,7 +12,7 @@   morphRef,   morphTransformer,   isolate,-  lookAhead,+  conditionally,   cursor ) where 
src/Data/Serialize/Describe/Internal/Descriptor.hs view
@@ -57,18 +57,34 @@ unwrapPut s = flip evalStateT 0 . ($ s) . snd . unwrapDescriptor  -- | Shifts the reference point of the described structure using the provided morphism. Identical to @lmap@.-morphRef :: (MonadTrans m, forall x. Monad x => Monad (m x)) => (s -> t) -> DescriptorM m t a -> DescriptorM m s a+morphRef +  :: ( MonadTrans m+     , forall x. Monad x => Monad (m x)+     ) +  => (s -> t) +  -> DescriptorM m t a +  -> DescriptorM m s a morphRef f (Descriptor (g, p)) = Descriptor (g, p . f)  -- | Morphs the underlying monad transformer-morphTransformer :: (MonadTrans t, MonadTrans u, forall n. Monad n => (Monad (t n), Monad (u n)))-                 => (forall m x. Monad m => t m x -> u m x)-                 -> DescriptorM t s a-                 -> DescriptorM u s a+morphTransformer +  :: ( MonadTrans t+     , MonadTrans u+     , forall n. Monad n => (Monad (t n), Monad (u n))+     )+  => (forall m x. Monad m => t m x -> u m x)+  -> DescriptorM t s a+  -> DescriptorM u s a morphTransformer f (Descriptor (g, p)) = Descriptor (hoist f g, hoist f <$> p)  -- | Wrapper around @isolate@ from Data.Serialize.Get-isolate :: (MonadTransControl m, forall x. Monad x => Monad (m x)) => Int -> DescriptorM m s a -> DescriptorM m s a+isolate +  :: ( MonadTransControl m+     , forall x. Monad x => Monad (m x)+     ) +  => Int +  -> DescriptorM m s a +  -> DescriptorM m s a isolate amt desc =    Descriptor      (liftWith (\r' -> @@ -77,11 +93,14 @@           >>= restoreT . return, snd $ unwrapDescriptor desc)  -- | Similar to lookAhead from Data.Serialize.Get; puts only if the field is @Just@-conditionally :: (MonadTransControl m, forall x. Monad x => Monad (m x))-              => (s -> Maybe a)-              -> (a -> Bool)-              -> DescriptorM m a a -              -> DescriptorM m s (Maybe a)+conditionally +  :: ( MonadTransControl m+     , forall x. Monad x => Monad (m x)+     )+  => (s -> Maybe a)+  -> (a -> Bool)+  -> DescriptorM m a a +  -> DescriptorM m s (Maybe a) conditionally f pd desc = Descriptor (g, p)   where     g =