simple repl

This commit is contained in:
2017-04-28 11:54:10 +02:00
parent 639a513ad4
commit a36bab384d
4 changed files with 34 additions and 12 deletions

View File

@@ -1,24 +1,45 @@
module BC.Prompt (startPrompt) where
import System.Console.Haskeline
import System.Posix.Signals
import BC.Config
printHeader :: IO ()
printHeader = do
putStrLn "bc (better calculator) version " ++ versionStr
putStrLn $ "bc (better calculator) version " ++ versionStr
putStrLn "Copyright 2017 Veit Heller"
putStrLn "This is free software with ABSOLUTELY NO WARRANTY.\n"
output :: [Char] -> InputT IO ()
output out = outputStrLn $ returnStr ++ out
prompt :: IO ()
prompt = runInputT settings $ poll prompt
prompt = runInputT defaultSettings $ poll promptStr
where poll p = do
input <- getInputLine p
case input of
Nothing -> return ""
Just str -> return str
input <- getInputLine p
case input of
Nothing -> do
output "Bye!"
return ()
Just "quit" -> do
output "Bye!"
return ()
Just str -> do
output str
poll p
installHandlers :: IO ()
installHandlers = do
installHandler keyboardSignal (Catch (putStrLn "\n(interrupt) type quit to exit")) Nothing
return ()
startPrompt :: IO ()
startPrompt = do
printHeader
installHandlers
prompt