diff options
author | tv <tv@shackspace.de> | 2015-10-08 20:39:37 +0200 |
---|---|---|
committer | tv <tv@shackspace.de> | 2015-10-08 22:03:31 +0200 |
commit | c07b9562e72133ccf5a64e880beb53cb8499a642 (patch) | |
tree | aedff354cfd937f76e304fb539e9ecee375651c3 /hirc.hs | |
parent | 38ab0e0de94353023f3e70eeafdab0db8673bf38 (diff) |
Parse IRC messages
Diffstat (limited to 'hirc.hs')
-rw-r--r-- | hirc.hs | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1,10 +1,14 @@ import Data.List +import Data.Monoid import Network import System.IO import System.Exit import Control.Arrow import Control.Monad.Reader import Control.Exception +import Hirc.Parser as P +import Hirc.Types +import Text.Parsec (parse) import Text.Printf server = "irc.freenode.org" @@ -49,12 +53,14 @@ listen :: Handle -> Net () listen h = forever $ do s <- init `fmap` io (hGetLine h) io (putStrLn s) + io (putStrLn $ show $ parse P.message filename s) if ping s then pong s else eval (clean s) where forever a = a >> forever a clean = drop 1 . dropWhile (/= ':') . drop 1 ping x = "PING :" `isPrefixOf` x pong x = write "PONG" (':' : drop 6 x) + filename = server <> (':' : show port) -- Dispatch a command eval :: String -> Net () |