From dfba882e1acbefebdd051d04cb2722405e55e257 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Tue, 17 May 2011 00:21:31 +0200 Subject: Wrote the quote module data structures. --- Hsbot/Plugin/Quote.hs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Hsbot/Plugin/Quote.hs (limited to 'Hsbot/Plugin/Quote.hs') diff --git a/Hsbot/Plugin/Quote.hs b/Hsbot/Plugin/Quote.hs new file mode 100644 index 0000000..adfcd24 --- /dev/null +++ b/Hsbot/Plugin/Quote.hs @@ -0,0 +1,47 @@ +{-# LANGUAGE TypeFamilies, DeriveDataTypeable, TemplateHaskell #-} +-- | This module is an IRC plugin that manages quotes for posterity and legend +module Hsbot.Plugin.Quote + () where + +import qualified Data.Map as M +import Data.SafeCopy +import Data.Typeable +import System.Time + +import Hsbot.Message +import Hsbot.Types +import Hsbot.Utils + +-- | A quote element +data QuoteElt = QuoteElt + { eltQuotee :: String + , eltQuote :: String + } deriving (Show, Typeable) + +-- | A quote object +data Quote = Quote + { quoter :: String + , quote :: [QuoteElt] + , quoteTime :: ClockTime + , votes :: Int + , voters :: M.Map String Int + } deriving (Show, Typeable) + +emptyQuote :: Quote +emptyQuote = Quote { quoter = "" + , quote = [] + , quoteTime = TOD 0 0 + , votes = 0 + , voters = M.empty } + +-- The Quote database +data QuoteDB = QuoteDB + { nextQuoteId :: Int + , quoteBotDB :: M.Map Int Quote + , lockedQuotes :: M.Map Int (String, ClockTime) + } deriving (Show, Typeable) + +$(deriveSafeCopy 0 'base ''QuoteElt) +$(deriveSafeCopy 0 'base ''Quote) +$(deriveSafeCopy 0 'base ''QuoteDB) + -- cgit v1.2.3