diff options
Diffstat (limited to 'src/GF/Shell/CommandL.hs')
| -rw-r--r-- | src/GF/Shell/CommandL.hs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/GF/Shell/CommandL.hs b/src/GF/Shell/CommandL.hs index 889af5b6f..62d3f9e87 100644 --- a/src/GF/Shell/CommandL.hs +++ b/src/GF/Shell/CommandL.hs @@ -5,9 +5,9 @@ -- Stability : (stable) -- Portability : (portable) -- --- > CVS $Date: 2005/04/21 16:23:19 $ --- > CVS $Author: bringert $ --- > CVS $Revision: 1.16 $ +-- > CVS $Date: 2005/06/03 22:44:36 $ +-- > CVS $Author: aarne $ +-- > CVS $Revision: 1.17 $ -- -- (Description of the module) ----------------------------------------------------------------------------- @@ -25,6 +25,7 @@ import GF.Compile.ShellState import GF.Infra.Option import GF.UseGrammar.Session import GF.Shell.Commands +import GF.Shell.PShell (wordsLits) import Data.Char import Data.List (intersperse) @@ -77,14 +78,18 @@ getCommand = do -- | decodes UTF8 if u==False, i.e. if the grammar does not use UTF8; -- used in the Java GUI, which always uses UTF8 -getCommandUTF :: Bool -> IO (String,Command) +getCommandUTF :: Bool -> IO [(String,Command)] getCommandUTF u = do s <- getLine - return $ pCommandMsg $ if u then s else decodeUTF8 s + return $ pCommandMsgs $ if u then s else decodeUTF8 s + +pCommandMsgs :: String -> [(String,Command)] +pCommandMsgs = map (pCommandMsg . unwords) . concatMap (chunks ";;" . words) . lines pCommand :: String -> Command pCommand = snd . pCommandMsg + pCommandMsg :: String -> (String,Command) pCommandMsg s = (m,pCommandWords $ words c) where (m,c) = case s of |
