on master help sign in
switch to haskeline to remove readline dependency
commit095294d43a304a8075b338c9cf26edda5a76f5a6 authorAgentM <agentm@themactionfaction.com> dateWed 28 Jan 2015, 19:45 (12 years ago) parent35688d4
2 files changed+19−17
TutorialDInterpreter.hs+18−16 project-m36.cabal+1−1
TutorialDInterpreter.hs+18−16
@@ -18,8 +18,9 @@ import qualified Data.Map as M
1818import qualified Data.List as L
1919import Control.Applicative (liftA, (<*), (*>))
2020import Control.Monad.State
21−import System.Console.Readline
21+import System.Console.Haskeline
2222import System.IO
23+import System.Directory (getHomeDirectory)
2324
2425lexer :: Token.TokenParser ()
2526lexer = Token.makeTokenParser tutD
@@ -327,25 +328,26 @@ interpretOps context instring = case parse interpreterOps "" instring of
327328
328329reprLoop :: DatabaseContext -> IO ()
329330reprLoop context = do
330− maybeLine <- readline "TutorialD: "
331+ homeDirectory <- getHomeDirectory
332+ let settings = defaultSettings {historyFile = Just (homeDirectory ++ "/.tutd_history")}
333+ maybeLine <- runInputT settings $ do
334+ getInputLine "TutorialD: "
331335 case maybeLine of
332336 Nothing -> return ()
333337 Just line -> do
334− addHistory line
335−
336− case interpretOps context line of
337− QuitResult -> return ()
338− DisplayErrorResult err -> hPutStrLn stderr ("ERR: " ++ err)
339− DisplayResult out -> do
340− putStrLn out
338+ case interpretOps context line of
339+ QuitResult -> return ()
340+ DisplayErrorResult err -> hPutStrLn stderr ("ERR: " ++ err)
341+ DisplayResult out -> do
342+ putStrLn out
343+ reprLoop context
344+ NoActionResult -> do
345+ let (value, contextup) = interpret context line
346+ case value of
347+ Nothing -> reprLoop contextup
348+ (Just err) -> do
349+ hPutStrLn stderr ("ERR:" ++ show err)
341350 reprLoop context
342− NoActionResult -> do
343− let (value, contextup) = interpret context line
344− case value of
345− Nothing -> reprLoop contextup
346− (Just err) -> do
347− hPutStrLn stderr ("ERR:" ++ show err)
348− reprLoop context
349351
350352restrictionPredicateP :: Parser RestrictionPredicateExpr
351353restrictionPredicateP = buildExpressionParser predicateOperators predicateTerm
project-m36.cabal+1−1
@@ -7,7 +7,7 @@ Category: Relational Algebra
77Cabal-Version: >= 1.2
88
99Executable tutd
10− Build-Depends: base,mtl,containers,unordered-containers,parsec,hashable,readline
10+ Build-Depends: base,mtl,containers,unordered-containers,parsec,hashable,haskeline,directory
1111 main-is: tutd.hs
1212 GHC-Options: -fwarn-unused-imports -fwarn-unused-binds
1313