1 {-# LANGUAGE OverloadedStrings #-}
2 -- https://gist.github.com/michaelt/88e1fac12876857deefe
4 -- https://gist.github.com/gelisam/c769d186493221d7ebbe and associated controversy.
8 import Prelude hiding (lines)
14 import Pipes.Text.Encoding
15 import Pipes.Text.IO (toHandle,stdout)
16 import qualified System.IO as IO
17 import Data.Functor (void)
18 import qualified Data.Text as T
21 req <- parseUrl "https://gist.github.com/gelisam/c769d186493221d7ebbe"
22 -- "http://www.example.com"
23 -- "http://www.gutenberg.org/files/10/10-h/10-h.htm"
24 withManager tlsManagerSettings $ \m ->
25 withHTTP req m $ \resp -> void $ runEffect $
26 number_lines_of (responseBody resp ^. utf8 . lines) >-> toHandle IO.stdout
28 number_lines_of :: Monad m => FreeT (Producer Text m) m r -> Producer Text m r
29 number_lines_of = number_loop (1 :: Int) where
30 number_loop n free = do
31 fproducer <- lift $ runFreeT free
35 return badbytes -- these could be inspected ...
37 yield $ T.pack ("\n" ++ show n ++ " ")
39 number_loop (n+1) next_free