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 bad -> Producer Text m bad
29 number_lines_of = number_loop (1 :: Int) where
30 number_loop n freeProducers = do
31 freeProducer <- lift $ runFreeT freeProducers
33 Pure badbytes -> do yield $ T.pack "\n"
34 return badbytes -- these could be inspected ...
35 Free p -> do yield $ T.pack ("\n" ++ show n ++ " ")
36 nextFreeProducers <- p
37 number_loop (n+1) nextFreeProducers