colonnade-old/siphon/src/Siphon/Encoding.hs
2016-07-05 11:32:01 -04:00

36 lines
767 B
Haskell

module Siphon.Encoding where
import Siphon.Types
import Colonnade.Types
import Pipes (Pipe,yield)
import qualified Pipes.Prelude as Pipes
import qualified Colonnade.Encoding as Encoding
row :: Siphon c
-> Encoding f c a
-> a
-> c
row (Siphon escape intercalate _ _) e =
intercalate . Encoding.runRow escape e
header :: Siphon c
-> Encoding Headed c a
-> c
header (Siphon escape intercalate _ _) e =
intercalate (Encoding.runHeader escape e)
pipe :: Monad m
=> Siphon c
-> Encoding f c a
-> Pipe a c m x
pipe siphon encoding = Pipes.map (row siphon encoding)
headedPipe :: Monad m
=> Siphon c
-> Encoding Headed c a
-> Pipe a c m x
headedPipe siphon encoding = do
yield (header siphon encoding)
pipe siphon encoding