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