packages feed

colonnade 0.4 → 0.4.1

raw patch · 3 files changed

+37/−5 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Colonnade.Types: [DecodingAp] :: !(f content) -> !(content -> Either String a) -> !(Decoding f content (a -> b)) -> Decoding f content b
- Colonnade.Types: [DecodingPure] :: !a -> Decoding f content a
+ Colonnade.Encoding: runHeaderMonadic_ :: (Monad m) => Encoding Headed content a -> (content -> m b) -> m ()
+ Colonnade.Encoding: runRowMonadicWith :: (Monad m) => b -> (b -> b -> b) -> Encoding f content a -> (content -> m b) -> a -> m b
+ Colonnade.Internal: foldMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b
+ Colonnade.Types: DecodingAp :: !(f content) -> !(content -> Either String a) -> !(Decoding f content (a -> b)) -> Decoding f content b
+ Colonnade.Types: DecodingPure :: !a -> Decoding f content a
- Colonnade.Decoding: contramapContent :: forall c1 c2 f a. Contravariant f => (c2 -> c1) -> Decoding f c1 a -> Decoding f c2 a
+ Colonnade.Decoding: contramapContent :: Contravariant f => (c2 -> c1) -> Decoding f c1 a -> Decoding f c2 a
- Colonnade.Decoding: headedToIndexed :: forall content a. Eq content => Vector content -> Decoding Headed content a -> Either (HeadingErrors content) (Decoding (Indexed Headed) content a)
+ Colonnade.Decoding: headedToIndexed :: Eq content => Vector content -> Decoding Headed content a -> Either (HeadingErrors content) (Decoding (Indexed Headed) content a)
- Colonnade.Decoding: headlessToIndexed :: forall c a. Decoding Headless c a -> Decoding (Indexed Headless) c a
+ Colonnade.Decoding: headlessToIndexed :: Decoding Headless c a -> Decoding (Indexed Headless) c a
- Colonnade.Decoding: length :: forall f c a. Decoding f c a -> Int
+ Colonnade.Decoding: length :: Decoding f c a -> Int
- Colonnade.Decoding: maxIndex :: forall f c a. Decoding (Indexed f) c a -> Int
+ Colonnade.Decoding: maxIndex :: Decoding (Indexed f) c a -> Int
- Colonnade.Decoding: uncheckedRun :: forall content a f. Decoding (Indexed f) content a -> Vector content -> Either (DecodingCellErrors f content) a
+ Colonnade.Decoding: uncheckedRun :: Decoding (Indexed f) content a -> Vector content -> Either (DecodingCellErrors f content) a

Files

colonnade.cabal view
@@ -1,5 +1,5 @@ name:                colonnade-version:             0.4+version:             0.4.1 synopsis:            Generic types and functions for columnar encoding and decoding description:         Please see README.md homepage:            https://github.com/andrewthad/colonnade#readme
src/Colonnade/Encoding.hs view
@@ -2,7 +2,9 @@  import Colonnade.Types import Data.Vector (Vector)+import Data.Foldable import qualified Data.Vector as Vector+import qualified Colonnade.Internal as Internal  mapContent :: Functor f => (c1 -> c2) -> Encoding f c1 a -> Encoding f c2 a mapContent f (Encoding v) = Encoding@@ -29,10 +31,25 @@               -> (content -> m b)               -> a               -> m b-runRowMonadic (Encoding v) g a = fmap (mconcat . Vector.toList) -  $ Vector.forM v +runRowMonadic (Encoding v) g a =+  --   fmap (mconcat . Vector.toList)+  -- $ Vector.forM v+  flip Internal.foldMapM v   $ \e -> g (oneEncodingEncode e a) +runRowMonadicWith :: (Monad m)+              => b+              -> (b -> b -> b)+              -> Encoding f content a+              -> (content -> m b)+              -> a+              -> m b+runRowMonadicWith bempty bappend (Encoding v) g a =+  foldrM (\e br -> do+    bl <- g (oneEncodingEncode e a)+    return (bappend bl br)+  ) bempty v+ runHeader :: (c1 -> c2) -> Encoding Headed c1 a -> Vector c2 runHeader g (Encoding v) =   Vector.map (g . getHeaded . oneEncodingHead) v@@ -44,14 +61,23 @@ runHeaderMonadic (Encoding v) g =   fmap (mconcat . Vector.toList) $ Vector.mapM (g . getHeaded . oneEncodingHead) v +runHeaderMonadic_ ::+     (Monad m)+  => Encoding Headed content a+  -> (content -> m b)+  -> m ()+runHeaderMonadic_ (Encoding v) g = Vector.mapM_ (g . getHeaded . oneEncodingHead) v+ fromMaybe :: c -> Encoding f c a -> Encoding f c (Maybe a) fromMaybe c (Encoding v) = Encoding $ flip Vector.map v $   \(OneEncoding h encode) -> OneEncoding h (maybe c encode)  columns :: (b -> a -> c)-        -> (b -> f c) -        -> Vector b +        -> (b -> f c)+        -> Vector b         -> Encoding f c a columns getCell getHeader bs =   Encoding $ Vector.map (\b -> OneEncoding (getHeader b) (getCell b)) bs++ 
src/Colonnade/Internal.hs view
@@ -1,6 +1,8 @@ {-# LANGUAGE DeriveFunctor #-} module Colonnade.Internal where +import Data.Foldable (foldrM)+ newtype EitherWrap a b = EitherWrap   { getEitherWrap :: Either a b   } deriving (Functor)@@ -15,3 +17,7 @@ mapLeft :: (a -> b) -> Either a c -> Either b c mapLeft _ (Right a) = Right a mapLeft f (Left a) = Left (f a)++foldMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b+foldMapM f = foldrM (\a b -> fmap (flip mappend b) (f a)) mempty+