From 6a35f83550304c1059d2ce7ac28938ee2adfabfb Mon Sep 17 00:00:00 2001 From: Andrew Martin Date: Sat, 9 Jul 2016 10:44:29 -0400 Subject: [PATCH] added more helpers --- colonnade/src/Colonnade/Encoding.hs | 14 ++++++++++++-- siphon/test/Test.hs | 1 - 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/colonnade/src/Colonnade/Encoding.hs b/colonnade/src/Colonnade/Encoding.hs index 3a53ab7..e218974 100644 --- a/colonnade/src/Colonnade/Encoding.hs +++ b/colonnade/src/Colonnade/Encoding.hs @@ -29,8 +29,9 @@ runRowMonadic :: (Monad m, Monoid b) -> (content -> m b) -> a -> m b -runRowMonadic (Encoding v) g a = fmap (mconcat . Vector.toList) $ Vector.forM v $ \e -> - g (oneEncodingEncode e a) +runRowMonadic (Encoding v) g a = fmap (mconcat . Vector.toList) + $ Vector.forM v + $ \e -> g (oneEncodingEncode e a) runHeader :: (c1 -> c2) -> Encoding Headed c1 a -> Vector c2 runHeader g (Encoding v) = @@ -43,5 +44,14 @@ runHeaderMonadic :: (Monad m, Monoid b) runHeaderMonadic (Encoding v) g = fmap (mconcat . Vector.toList) $ 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 + -> Encoding f c a +columns getCell getHeader bs = + Encoding $ Vector.map (\b -> OneEncoding (getHeader b) (getCell b)) bs diff --git a/siphon/test/Test.hs b/siphon/test/Test.hs index 0cc00ba..2be018c 100644 --- a/siphon/test/Test.hs +++ b/siphon/test/Test.hs @@ -67,7 +67,6 @@ testEncodingA = Pipes.yield (4,'c',False) >-> SE.pipe SC.byteStringChar8 encodingA ) @?= "4,c,false\n" - propEncodeDecodeIso :: Eq a => (a -> b) -> (b -> Maybe a) -> a -> Bool propEncodeDecodeIso f g a = g (f a) == Just a