diff options
| -rw-r--r-- | Main.hs | 58 | ||||
| -rw-r--r-- | Makefile | 2 |
2 files changed, 29 insertions, 31 deletions
@@ -23,38 +23,36 @@ r = main dispatch :: Dispatch dispatch cmd sendMessage env@(Env state conf _) = - getLambda ("!" ++ cmd) state - where - printHelp = sendMessage . concat . showL - getLambda x = let (Cmd _ _ c) = getCmd x in c - getDescr x = let (Cmd _ b _) = getCmd x in b + let (Cmd _ _ dispatchFunction) = getCmd ("!" ++ cmd) + in dispatchFunction state + where getCmd x = - let command = [ (Cmd a b c) | (Cmd a b c) <- commands, a == x ] - in if length command == 0 - then getCmd "!i" - else head command + let command = [ (Cmd a b c) | (Cmd a b c) <- commands, a == x ] + in if length command == 0 + then getCmd "!i" + else head command commands = [ - Cmd "!h" "Prints help" - (\_ -> printHelp commands ), - - Cmd "!i" "Prints infos" - (\_ -> sendMessage $ (envGet "name" env) - ++ " " ++ (envGet "version" env) - ++ " (try !h)" ), - - Cmd "!p" "Prints current state" - (\s -> sendMessage $ show s ), - - Cmd "!s" "Stores current state to file" - (\s -> do - sendMessage "Storing current state" - stateSave (envGet "databaseFile" env) s ), - - Cmd "!q" "quits" - (\s -> do - sendMessage "Good bye" - stateSave (envGet "databaseFile" env) s - exitWith ExitSuccess ) + Cmd "!h" "Prints help" printHelp, + Cmd "!i" "Prints infos" printInfos, + Cmd "!p" "Prints current state" printState, + Cmd "!s" "Stores current state to file" storeState, + Cmd "!q" "quits" quit ] + printHelp _ = printHelp' commands + where printHelp' = sendMessage . concat . showL + printInfos _ = do + sendMessage $ (envGet "name" env) + ++ " " ++ (envGet "version" env) + ++ " (try !h)" + printState = sendMessage . show + storeState state = do + sendMessage "Storing current state" + stateSave (envGet "databaseFile" env) state + quit state = do + sendMessage "Good bye" + stateSave (envGet "databaseFile" env) state + exitWith ExitSuccess + + @@ -1,5 +1,5 @@ all: - ghc HsBot.hs -o hsbot + ghc Main.hs -o hsbot test: all ./hsbot |
