summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HsBot/Base.hs2
-rw-r--r--HsBot/Callbacks.hs11
-rw-r--r--HsBot/Callbacks/Base.hs13
-rw-r--r--HsBot/Callbacks/Callback.hs13
-rw-r--r--HsBot/Callbacks/Dummy.hs5
-rw-r--r--HsBot/Callbacks/MessageCounter.hs6
-rw-r--r--HsBot/Callbacks/PrintMessages.hs5
-rw-r--r--HsBot/Callbacks/StoreMessages.hs5
8 files changed, 33 insertions, 27 deletions
diff --git a/HsBot/Base.hs b/HsBot/Base.hs
index 8f6d099..1c3d4a4 100644
--- a/HsBot/Base.hs
+++ b/HsBot/Base.hs
@@ -18,7 +18,7 @@ startBase = do
state' <- state -- Extract State from the IO Monad
ircStart (DispatchEnv state' conf dispatch)
-dispatch :: Dispatch
+dispatch :: DispatchFunction
dispatch msg sendMessage env@(Env state conf) = dispatch' msg
where
dispatch' ('!':_) =
diff --git a/HsBot/Callbacks.hs b/HsBot/Callbacks.hs
index 7caff19..0bbf08f 100644
--- a/HsBot/Callbacks.hs
+++ b/HsBot/Callbacks.hs
@@ -3,16 +3,17 @@ module HsBot.Callbacks (callbacksRun) where
import HsBot.Base.Env
import HsBot.Base.State
+import HsBot.Callbacks.Base
import HsBot.Callbacks.MessageCounter
import HsBot.Callbacks.PrintMessages
import HsBot.Callbacks.StoreMessages
import HsBot.Callbacks.Dummy
registeredCallbacks = [
- messageCounter,
- printMessages,
- storeMessages,
- dummy
+ makeMessageCounter,
+ makePrintMessages,
+ makeStoreMessages,
+ makeDummy
]
callbacksRun :: String -> SendMessage -> Env -> IO Env
@@ -22,6 +23,6 @@ callbacksRun str sendMessage env@(Env state _)
where
callbackAll [] env = return (env)
callbackAll (callback:restCallbacks) env = do
- env' <- callback str sendMessage env
+ env' <- (cbFunction callback) str sendMessage env
callbackAll restCallbacks env'
diff --git a/HsBot/Callbacks/Base.hs b/HsBot/Callbacks/Base.hs
new file mode 100644
index 0000000..40e9769
--- /dev/null
+++ b/HsBot/Callbacks/Base.hs
@@ -0,0 +1,13 @@
+module HsBot.Callbacks.Base where
+
+import HsBot.Base.Env
+import HsBot.Base.State
+
+type CallbackFunction = String -> SendMessage -> Env -> IO Env
+
+data Callback a = Callback {
+ cbPrio :: Integer,
+ cbFunction :: CallbackFunction
+}
+
+
diff --git a/HsBot/Callbacks/Callback.hs b/HsBot/Callbacks/Callback.hs
deleted file mode 100644
index c92aa96..0000000
--- a/HsBot/Callbacks/Callback.hs
+++ /dev/null
@@ -1,13 +0,0 @@
-module HsBot.Callbacks.Callback where
-
-import HsBot.Base.Env
-import HsBot.Base.State
-
-type CallbackFunction = String -> SendMessage -> Env -> IO Env
-
-class Callback a where
- cbRunPrio :: a -> Integer
- cbRunPrio a = 0
-
- cbRun :: a
-
diff --git a/HsBot/Callbacks/Dummy.hs b/HsBot/Callbacks/Dummy.hs
index 5d83ade..3096af5 100644
--- a/HsBot/Callbacks/Dummy.hs
+++ b/HsBot/Callbacks/Dummy.hs
@@ -1,6 +1,6 @@
-module HsBot.Callbacks.Dummy (dummy) where
+module HsBot.Callbacks.Dummy (makeDummy) where
-import HsBot.Callbacks.Callback
+import HsBot.Callbacks.Base
import HsBot.Base.Env
import HsBot.Base.State
@@ -8,3 +8,4 @@ import HsBot.Base.State
dummy :: CallbackFunction
dummy str sendMessage env@(Env state _) = return (env)
+makeDummy = Callback 0 dummy
diff --git a/HsBot/Callbacks/MessageCounter.hs b/HsBot/Callbacks/MessageCounter.hs
index a2782a8..18f6dba 100644
--- a/HsBot/Callbacks/MessageCounter.hs
+++ b/HsBot/Callbacks/MessageCounter.hs
@@ -1,6 +1,6 @@
-module HsBot.Callbacks.MessageCounter (messageCounter) where
+module HsBot.Callbacks.MessageCounter (makeMessageCounter) where
-import HsBot.Callbacks.Callback
+import HsBot.Callbacks.Base
import HsBot.Base.Env
import HsBot.Base.State
@@ -12,3 +12,5 @@ update user = user { userMessages = 1 + userMessages user }
messageCounter :: CallbackFunction
messageCounter str sendMessage (Env state conf) = do
return (Env (stateUpdateUser state (currentSender state) update) conf)
+
+makeMessageCounter = Callback 0 messageCounter
diff --git a/HsBot/Callbacks/PrintMessages.hs b/HsBot/Callbacks/PrintMessages.hs
index 456d46d..2674aa9 100644
--- a/HsBot/Callbacks/PrintMessages.hs
+++ b/HsBot/Callbacks/PrintMessages.hs
@@ -1,6 +1,6 @@
-module HsBot.Callbacks.PrintMessages (printMessages) where
+module HsBot.Callbacks.PrintMessages (makePrintMessages) where
-import HsBot.Callbacks.Callback
+import HsBot.Callbacks.Base
import HsBot.Base.Env
import HsBot.Base.State
@@ -12,3 +12,4 @@ printMessages str sendMessage env@(Env state _) = do
++ str
return (env)
+makePrintMessages = Callback 0 printMessages
diff --git a/HsBot/Callbacks/StoreMessages.hs b/HsBot/Callbacks/StoreMessages.hs
index 673cc38..0a7ab4d 100644
--- a/HsBot/Callbacks/StoreMessages.hs
+++ b/HsBot/Callbacks/StoreMessages.hs
@@ -1,6 +1,6 @@
-module HsBot.Callbacks.StoreMessages (storeMessages) where
+module HsBot.Callbacks.StoreMessages (makeStoreMessages) where
-import HsBot.Callbacks.Callback
+import HsBot.Callbacks.Base
import HsBot.Base.Env
import HsBot.Base.State
@@ -9,3 +9,4 @@ storeMessages :: CallbackFunction
storeMessages str sendMessage env@(Env state _) = do
return (env)
+makeStoreMessages = Callback 0 storeMessages