-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Parse IRC logs such as the #haskell logs on tunes.org
--
-- Use this library to parse IRC logs saved by the clog bot on
-- Freenode. This includes the logs of #haskell which are
-- available from http://tunes.org/~nef/logs/haskell/.
--
-- Suggestions and patches are welcome.
@package clogparse
@version 0.2
-- | Represents events in an IRC channel. These do not correspond precisely
-- to messages of the IRC protocol. They provide a somewhat higher-level
-- view.
module Data.IRC.Event
-- | IRC nicks.
newtype Nick
Nick :: Text -> Nick
-- | Events in an IRC channel.
data Event
-- | User joined.
Join :: Nick -> Text -> Event
-- | User left the channel.
Part :: Nick -> Text -> Event
-- | User quit the server.
Quit :: Nick -> Text -> Event
-- | User changed from one to another nick.
ReNick :: Nick -> Nick -> Event
-- | User spoke (PRIVMSG).
Talk :: Nick -> Text -> Event
-- | User spoke (NOTICE).
Notice :: Nick -> Text -> Event
-- | User acted (CTCP ACTION).
Act :: Nick -> Text -> Event
-- | User was kicked by user.
Kick :: Nick -> Nick -> Text -> Event
-- | User set mode on the channel.
Mode :: Nick -> Text -> Event
-- | Logging started or stopped.
Log :: Text -> Event
-- | Topic listing or change.
Topic :: Text -> Event
-- | Users list.
Names :: Text -> Event
-- | Event with timestamp.
data EventAt
-- | Event with timestamp.
EventAt :: UTCTime -> Event -> EventAt
-- | Unparsable line.
NoParse :: Text -> EventAt
-- | For working with Events generically.
--
-- Indicates the "subject" of an event, if any, followed by other text.
--
-- The subject of a ReNick event is the old nick.
data GenericEvent
GenericEvent :: Constr -> (Maybe Nick) -> [Text] -> GenericEvent
-- | Decompose an Event into a
-- GenericEvent.
decompose :: Event -> GenericEvent
instance Typeable GenericEvent
instance Typeable Event
instance Typeable Nick
instance Typeable EventAt
instance Show GenericEvent
instance Eq GenericEvent
instance Show Event
instance Eq Event
instance Ord Event
instance Data Event
instance Show Nick
instance Eq Nick
instance Ord Nick
instance Data Nick
instance Show EventAt
instance Eq EventAt
instance Ord EventAt
-- | Parse events from clog output, such as the files at
-- http://tunes.org/~nef/logs/haskell/.
--
-- IRC has no single standard character encoding. This module decodes
-- messages as UTF-8 following common practice on Freenode.
module Data.IRC.CLog.Parse
-- | Parse a log file.
--
-- The file name (after any directory) is significant. It is used to set
-- the date for timestamps. It should have the form YY.MM.DD, as
-- do the files on tunes.org.
parseLog :: Config -> FilePath -> IO [EventAt]
-- | Configuring the parser.
data Config
Config :: String -> FilePath -> Config
-- | Timestamp time zone; an Olson time zone name.
timeZone :: Config -> String
-- | Directory for time zone files; $TZDIR overrides.
zoneInfo :: Config -> FilePath
-- | Config value suitable for parsing #haskell
-- logs on Linux.
haskellConfig :: Config
instance Show Config