colonnade 0.4.5 → 0.4.6
raw patch · 2 files changed
+40/−7 lines, 2 filesdep ~bytestringdep ~contravariantdep ~textPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bytestring, contravariant, text, vector
API changes (from Hackage documentation)
+ Colonnade.Encoding: runBothMonadic_ :: Monad m => Encoding Headed content a -> (content -> content -> m b) -> a -> m ()
+ Colonnade.Encoding: runHeaderMonadicGeneral :: (Monad m, Monoid b, Foldable h) => Encoding h content a -> (content -> m b) -> m b
+ Colonnade.Encoding: runHeaderMonadicGeneral_ :: (Monad m, Monoid b, Foldable h) => Encoding h content a -> (content -> m b) -> m ()
+ Colonnade.Encoding: runRowMonadic_ :: Monad m => Encoding f content a -> (content -> m b) -> a -> m ()
Files
- colonnade.cabal +5/−5
- src/Colonnade/Encoding.hs +35/−2
colonnade.cabal view
@@ -1,5 +1,5 @@ name: colonnade-version: 0.4.5+version: 0.4.6 synopsis: Generic types and functions for columnar encoding and decoding description: Please see README.md homepage: https://github.com/andrewthad/colonnade#readme@@ -25,10 +25,10 @@ Colonnade.Internal build-depends: base >= 4.7 && < 5- , contravariant- , vector- , text- , bytestring+ , contravariant >= 1.2 && < 1.5+ , vector >= 0.10 && < 0.12+ , text >= 1.0 && < 1.3+ , bytestring >= 0.10 && < 0.11 default-language: Haskell2010 source-repository head
src/Colonnade/Encoding.hs view
@@ -26,6 +26,14 @@ runRow g (Encoding v) a = flip Vector.map v $ \(OneEncoding _ encode) -> g (encode a) +runBothMonadic_ :: Monad m+ => Encoding Headed content a+ -> (content -> content -> m b)+ -> a+ -> m ()+runBothMonadic_ (Encoding v) g a =+ forM_ v $ \(OneEncoding (Headed h) encode) -> g h (encode a)+ runRowMonadic :: (Monad m, Monoid b) => Encoding f content a -> (content -> m b)@@ -35,6 +43,14 @@ flip Internal.foldlMapM v $ \e -> g (oneEncodingEncode e a) +runRowMonadic_ :: Monad m+ => Encoding f content a+ -> (content -> m b)+ -> a+ -> m ()+runRowMonadic_ (Encoding v) g a =+ forM_ v $ \e -> g (oneEncodingEncode e a)+ runRowMonadicWith :: (Monad m) => b -> (b -> b -> b)@@ -43,8 +59,8 @@ -> a -> m b runRowMonadicWith bempty bappend (Encoding v) g a =- foldlM (\br e -> do- bl <- g (oneEncodingEncode e a)+ foldlM (\bl e -> do+ br <- g (oneEncodingEncode e a) return (bappend bl br) ) bempty v @@ -52,12 +68,29 @@ runHeader g (Encoding v) = Vector.map (g . getHeaded . oneEncodingHead) v +-- | This function is a helper for abusing 'Foldable' to optionally+-- render a header. Its future is uncertain.+runHeaderMonadicGeneral :: (Monad m, Monoid b, Foldable h)+ => Encoding h content a+ -> (content -> m b)+ -> m b+runHeaderMonadicGeneral (Encoding v) g = id+ $ fmap (mconcat . Vector.toList)+ $ Vector.mapM (Internal.foldlMapM g . oneEncodingHead) v+ runHeaderMonadic :: (Monad m, Monoid b) => Encoding Headed content a -> (content -> m b) -> m b runHeaderMonadic (Encoding v) g = fmap (mconcat . Vector.toList) $ Vector.mapM (g . getHeaded . oneEncodingHead) v++runHeaderMonadicGeneral_ :: (Monad m, Monoid b, Foldable h)+ => Encoding h content a+ -> (content -> m b)+ -> m ()+runHeaderMonadicGeneral_ (Encoding v) g =+ Vector.mapM_ (Internal.foldlMapM g . oneEncodingHead) v runHeaderMonadic_ :: (Monad m)