module Data.Conduit.Shell.Segments where
import qualified Data.ByteString.Char8 as S8
import Data.Conduit
import qualified Data.Conduit.List as CL
import qualified Data.Conduit.Binary as CB
import Data.Conduit.Shell.Process
import Data.Text (Text)
import qualified Data.Text.Encoding as T
strings :: Segment () -> Segment [String]
strings s = s $| conduit (CB.lines .| CL.map S8.unpack .| CL.consume)
texts :: Segment () -> Segment [Text]
texts s = s $| conduit (CB.lines .| CL.map T.decodeUtf8 .| CL.consume)
ignore :: Segment () -> Segment ()
ignore s = fmap (const ()) (s $| conduit (CL.consume))