From 2c19600a17390ad63b759956cd42912b0e0a5f42 Mon Sep 17 00:00:00 2001 From: bjorn Date: Fri, 23 May 2008 06:31:52 +0000 Subject: [PATCH] Added GF.System.Readline and related modules back into src-3.0. --- src-3.0/GF/System/NoReadline.hs | 27 +++++++++++++++++++++++++++ src-3.0/GF/System/Readline.hs | 27 +++++++++++++++++++++++++++ src-3.0/GF/System/UseReadline.hs | 25 +++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 src-3.0/GF/System/NoReadline.hs create mode 100644 src-3.0/GF/System/Readline.hs create mode 100644 src-3.0/GF/System/UseReadline.hs diff --git a/src-3.0/GF/System/NoReadline.hs b/src-3.0/GF/System/NoReadline.hs new file mode 100644 index 000000000..138ba4e28 --- /dev/null +++ b/src-3.0/GF/System/NoReadline.hs @@ -0,0 +1,27 @@ +---------------------------------------------------------------------- +-- | +-- Module : GF.System.NoReadline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 15:04:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Do not use readline. +----------------------------------------------------------------------------- + +module GF.System.NoReadline (fetchCommand) where + +import System.IO.Error (try) +import System.IO (stdout,hFlush) + +fetchCommand :: String -> IO (String) +fetchCommand s = do + putStr s + hFlush stdout + res <- try getLine + case res of + Left e -> return "q" + Right l -> return l diff --git a/src-3.0/GF/System/Readline.hs b/src-3.0/GF/System/Readline.hs new file mode 100644 index 000000000..c12493f98 --- /dev/null +++ b/src-3.0/GF/System/Readline.hs @@ -0,0 +1,27 @@ +{-# OPTIONS -cpp #-} + +---------------------------------------------------------------------- +-- | +-- Module : GF.System.Readline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 15:04:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.2 $ +-- +-- Uses the right readline library to read user input. +----------------------------------------------------------------------------- + +module GF.System.Readline (fetchCommand) where + +#ifdef USE_READLINE + +import GF.System.UseReadline (fetchCommand) + +#else + +import GF.System.NoReadline (fetchCommand) + +#endif diff --git a/src-3.0/GF/System/UseReadline.hs b/src-3.0/GF/System/UseReadline.hs new file mode 100644 index 000000000..c84b9d7f4 --- /dev/null +++ b/src-3.0/GF/System/UseReadline.hs @@ -0,0 +1,25 @@ +---------------------------------------------------------------------- +-- | +-- Module : GF.System.UseReadline +-- Maintainer : BB +-- Stability : (stable) +-- Portability : (portable) +-- +-- > CVS $Date: 2005/05/10 15:04:01 $ +-- > CVS $Author: bringert $ +-- > CVS $Revision: 1.1 $ +-- +-- Use GNU readline +----------------------------------------------------------------------------- + +module GF.System.UseReadline (fetchCommand) where + +import System.Console.Readline (readline, addHistory) + +fetchCommand :: String -> IO (String) +fetchCommand s = do + res <- readline s + case res of + Nothing -> return "q" + Just s -> do addHistory s + return s