packages feed

proto-lens-combinators 0.1.0.12 → 0.4

raw patch · 4 files changed

+24/−22 lines, 4 filesdep +proto-lens-runtimedep −data-default-classdep −proto-lens-protocdep ~basedep ~proto-lensPVP ok

version bump matches the API change (PVP)

Dependencies added: proto-lens-runtime

Dependencies removed: data-default-class, proto-lens-protoc

Dependency ranges changed: base, proto-lens

API changes (from Hackage documentation)

- Data.ProtoLens.Combinators: make :: Default def => State def a -> def
+ Data.ProtoLens.Combinators: make :: Message msg => State msg a -> msg

Files

Changelog.md view
@@ -1,7 +1,10 @@ # Changelog for `proto-lens-combinators` +## v0.4.0.0+- Update to (and require) `proto-lens-0.4.*`.+ ## v0.1.0.12-- Add support for ghc-8.6.+- Switch to `proto-lens-{setup/runtime}` v0.4.  ## v0.1.0.11 - Bump the lower bound on `base` to indicate we require `ghc>=8.0`.
proto-lens-combinators.cabal view
@@ -2,10 +2,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 7a0758df4f3edec44050b361e5e9a8dad6b8c81b46fb199d71c85c2cb52b43b4+-- hash: 6dee157d60bdded5f5b245b2c18c7f4cff2e4fb8a8deec8b89aa190d71b8d60c  name:           proto-lens-combinators-version:        0.1.0.12+version:        0.4 synopsis:       Utilities functions to proto-lens. description:    Useful things for working with protos. category:       Data@@ -30,8 +30,8 @@ custom-setup   setup-depends:       Cabal-    , base >=4.9 && <4.13-    , proto-lens-protoc ==0.3.*+    , base >=4.9 && <4.12+    , proto-lens-setup ==0.4.*  library   exposed-modules:@@ -41,10 +41,9 @@   hs-source-dirs:       src   build-depends:-      base >=4.9 && <4.13-    , data-default-class >=0.0 && <0.2+      base >=4.9 && <4.12     , lens-family ==1.2.*-    , proto-lens-protoc ==0.3.*+    , proto-lens ==0.4.*     , transformers >=0.4 && <0.6   default-language: Haskell2010 @@ -62,7 +61,7 @@     , lens-family-core     , proto-lens     , proto-lens-combinators-    , proto-lens-protoc+    , proto-lens-runtime ==0.4.*     , test-framework     , test-framework-hunit   default-language: Haskell2010
src/Data/ProtoLens/Combinators.hs view
@@ -16,7 +16,7 @@     ) where  import Control.Monad.Trans.State (State, execState)-import Data.Default.Class (Default(def))+import Data.ProtoLens (Message(..)) import Data.Maybe (isJust) import Lens.Family2 (LensLike, Phantom, Setter, to, (.~)) @@ -33,8 +33,8 @@  -- | Creates a 'Default' and then applies the provided `State` to it.  This is -- convenient for creating complicated structures.-make :: Default def => State def a -> def-make = modifyInState def+make :: Message msg => State msg a -> msg+make = modifyInState defMessage  -- | Allows one to modify a value in the 'State' monad.  Note that this is -- just for syntactic convenience with @do@ blocks, e.g.
tests/combinators_test.hs view
@@ -7,7 +7,7 @@ {-# LANGUAGE OverloadedStrings #-} module Main where -import Data.ProtoLens (def)+import Data.ProtoLens (defMessage) import Data.ProtoLens.Combinators import Lens.Family ((^.), (.~), (&)) import Lens.Family.State ((.=), (<~), use, zoom)@@ -19,7 +19,7 @@  main :: IO () main = defaultMain $ hUnitTestToTests $ "" ~:-    [ let proto = def & quux .~ 1 & foo .~ def :: Foo+    [ let proto = defMessage & quux .~ 1 & foo .~ defMessage :: Foo       in "has" ~:           [ "True" ~: proto ^. has maybe'quux ~?= True           , "False" ~: proto ^. has maybe'bar ~?= False@@ -28,13 +28,13 @@               , "False" ~: proto ^. has (foo . maybe'buzz) ~?= False               ]           ]-    , let proto = def & quux .~ 2 & foo . fizz .~ 3 :: Foo+    , let proto = defMessage & quux .~ 2 & foo . fizz .~ 3 :: Foo       in "clear" ~:           [ "no-op" ~: clear maybe'bar proto ~?= proto-          , "scalar" ~: clear maybe'quux proto ~?= (def & foo . fizz .~ 3)-          , "group" ~: clear maybe'foo proto ~?= (def & quux .~ 2)+          , "scalar" ~: clear maybe'quux proto ~?= (defMessage & foo . fizz .~ 3)+          , "group" ~: clear maybe'foo proto ~?= (defMessage & quux .~ 2)           , "nested" ~: clear (foo . maybe'fizz) proto ~?=-              (def & quux .~ 2 & foo .~ def)+              (defMessage & quux .~ 2 & foo .~ defMessage)           ]     , let actual :: Foo           actual = make $ do@@ -44,13 +44,13 @@                   fizz .= 5                   buzz .= "B"               zoom baz $ return ()-          expected = def & quux .~ 4 & foo . buzz .~ "A" &-              bar .~ (def & fizz .~ 5 & buzz .~ "B") & baz .~ def+          expected = defMessage & quux .~ 4 & foo . buzz .~ "A" &+              bar .~ (defMessage & fizz .~ 5 & buzz .~ "B") & baz .~ defMessage       in "make" ~: actual ~?= expected-    , let original = def & quux .~ 6 & baz . fizz .~ 7 :: Foo+    , let original = defMessage & quux .~ 6 & baz . fizz .~ 7 :: Foo           actual = modifyInState original $ do               bar . fizz <~ use quux               quux .= 8-          expected = def & quux .~ 8 & bar . fizz .~ 6 & baz . fizz .~ 7+          expected = defMessage & quux .~ 8 & bar . fizz .~ 6 & baz . fizz .~ 7       in "modifyInState" ~: actual ~?= expected     ]