-- -- Provides interface to messages, message pipes -- module Message where import Control.Concurrent -- TODO: probably remove "Show a" later class Show a => Message a where -- | extracts the nickname involved in a given message. nick :: a -> String -- | 'fullName' extracts the full user name involved in a given message. fullName :: a -> String -- | 'names' builds a NAMES message from a list of channels. names :: [String] -> a -- | 'channels' extracts the channels a Message operate on. channels :: a -> [String] -- | 'join' creates a join message. String given is the location (channel) to join joinChannel :: String -> a -- | 'part' parts the channel given. partChannel :: String -> a -- | 'getTopic' Returns the topic for a channel, given as a String getTopic :: String -> a -- | 'setTopic' takes a channel and a topic. It then returns the message -- which sets the channels topic. setTopic :: String -> String -> a -- TODO: recheck this. It's usage heavily relies on the fact that message comes from IRC body :: a -> [String] -- TODO: too IRC-specific command :: a -> String type Pipe a = Chan (Maybe a)