summaryrefslogtreecommitdiff
path: root/src-3.0/GF/Shell/CommandL.hs
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@chalmers.se>2008-05-22 11:59:31 +0000
committerkr.angelov <kr.angelov@chalmers.se>2008-05-22 11:59:31 +0000
commitdf0c4f81fa9c620d7c63af79c0b183a6beccf0bd (patch)
tree0cdc80b29f8f5df0ad280f17be0ba9d46fbd948c /src-3.0/GF/Shell/CommandL.hs
parent6394f3ccfbb9d14017393b433a38a3921f1083e5 (diff)
remove all files that aren't used in GF-3.0
Diffstat (limited to 'src-3.0/GF/Shell/CommandL.hs')
-rw-r--r--src-3.0/GF/Shell/CommandL.hs198
1 files changed, 0 insertions, 198 deletions
diff --git a/src-3.0/GF/Shell/CommandL.hs b/src-3.0/GF/Shell/CommandL.hs
deleted file mode 100644
index efb6460b4..000000000
--- a/src-3.0/GF/Shell/CommandL.hs
+++ /dev/null
@@ -1,198 +0,0 @@
-----------------------------------------------------------------------
--- |
--- Module : CommandL
--- Maintainer : AR
--- Stability : (stable)
--- Portability : (portable)
---
--- > CVS $Date: 2005/08/17 15:13:55 $
--- > CVS $Author: aarne $
--- > CVS $Revision: 1.21 $
---
--- (Description of the module)
------------------------------------------------------------------------------
-
-module GF.Shell.CommandL where
-
-import GF.Data.Operations
-import GF.Infra.UseIO
-
-import GF.Canon.CMacros
-import GF.Grammar.Values (Tree)
-
-import GF.UseGrammar.GetTree
-import GF.Compile.ShellState
-import GF.Infra.Option
-import GF.UseGrammar.Session
-import GF.Shell.Commands
-import GF.UseGrammar.Tokenize (wordsLits)
-
-import Data.Char
-import Data.List (intersperse)
-import Control.Monad (foldM)
-
-import GF.Text.UTF8
-
--- | a line-based shell
-initEditLoop :: CEnv -> IO () -> IO ()
-initEditLoop env resume = do
- let env' = startEditEnv env
- putStrLnFlush $ initEditMsg env'
- let state = initSStateEnv env'
- putStrLnFlush $ showCurrentState env' state
- editLoop env' state resume
-
-editLoop :: CEnv -> SState -> IO () -> IO ()
-editLoop env state resume = do
- putStrFlush "edit> "
- c <- getCommand
- if (isQuit c) then resume else do
- (env',state') <- execCommand env c state
- let package = case c of
- CCEnvEmptyAndImport _ -> initEditMsgEmpty env'
- _ -> showCurrentState env' state'
- putStrLnFlush package
-
- editLoop env' state' resume
-
--- | execute a command script and return a tree
-execCommandHistory :: CEnv -> String -> IO (CEnv,Tree)
-execCommandHistory env s = do
- let env' = startEditEnv env
- let state = initSStateEnv env'
- (env',state') <- foldM exec (env,state) $ lines s
- return $ (env',treeSState state')
-
- where
-
- exec (env,state) l = do
- let c = pCommand l
- execCommand env c state
-
-
-
-getCommand :: IO Command
-getCommand = do
- s <- getLine
- return $ pCommand s
-
--- | decodes UTF8 if u==True, i.e. if the grammar uses UTF8;
--- used in the Java GUI, which always uses UTF8
-getCommandUTF :: Bool -> IO [(String,Command)]
-getCommandUTF u = do
- s <- getLine
- return $ pCommandMsgs $ if u then decodeUTF8 s else 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
- '[':s2 -> let (a,b) = span (/=']') s2 in (a,drop 1 b)
- _ -> ("",s)
- pCommandWords s = case s of
- "n" : cat : _ -> CNewCat cat
- "t" : ws -> CNewTree $ unwords ws
- "g" : ws -> CRefineWithTree $ unwords ws -- example: *g*ive
- "p" : ws -> CRefineParse $ unwords ws
- "rc": i : _ -> CRefineWithClip (readIntArg i)
- ">" : i : _ -> CAhead $ readIntArg i
- ">" : [] -> CAhead 1
- "<" : i : _ -> CBack $ readIntArg i
- "<" : [] -> CBack 1
- ">>" : _ -> CNextMeta
- "<<" : _ -> CPrevMeta
- "'" : _ -> CTop
- "+" : _ -> CLast
- "mp" : p -> CMovePosition (readIntList (unwords p))
- "ct" : p:q:_ -> CCopyPosition (readIntList p) (readIntList q)
- "r" : f : _ -> CRefineWithAtom f
- "w" : f:i : _ -> CWrapWithFun (f, readIntArg i)
- "ch": f : _ -> CChangeHead f
- "ph": f:i : _ -> CPeelHead (f, readIntArg i)
- "x" : ws -> CAlphaConvert $ unwords ws
- "s" : i : _ -> CSelectCand (readIntArg i)
- "f" : "unstructured" : _ -> CRemoveOption showStruct --- hmmm
- "f" : "structured" : _ -> CAddOption showStruct --- hmmm
- "f" : s : _ -> CAddOption (filterString s)
- "u" : i : _ -> CUndo (readIntArg i)
- "u" : _ -> CUndo 1
- "d" : _ -> CDelete
- "ac" : _ -> CAddClip
- "pc": i : _ -> CRemoveClip (readIntArg i)
- "c" : s : _ -> CTermCommand s
- "a" : _ -> CRefineRandom --- *a*leatoire
- "m" : _ -> CMenu
- "ml" : s : _ -> changeMenuLanguage s
- "ms" : s : _ -> changeMenuSize s
- "mt" : s : _ -> changeMenuTyped s
- "v" : _ -> CView
- "q" : _ -> CQuit
- "h" : _ -> CHelp initEditMsg
-
- "i" : file: _ -> CCEnvImport file
- "e" : [] -> CCEnvEmpty
- "e" : file: _ -> CCEnvEmptyAndImport file
-
- "open" : f: _ -> CCEnvOpenTerm f
- "openstring": f: _ -> CCEnvOpenString f
-
- "on" :lang: _ -> CCEnvOn lang
- "off":lang: _ -> CCEnvOff lang
- "pfile" :f:_ -> CCEnvRefineParse f
- "tfile" :f:_ -> CCEnvRefineWithTree f
- "save":l:f:_ -> CCEnvSave l f
-
--- openstring file
--- pfile file
--- tfile file
--- on lang
--- off lang
-
- "gf": comm -> CCEnvGFShell (unwords comm)
-
- [] -> CVoid
- _ -> CError
-
--- | well, this lists the commands of the line-based editor
-initEditMsg :: CEnv -> String
-initEditMsg env = unlines $
- "State-dependent editing commands are given in the menu:" :
- " n [Cat] = new, r [Fun] = refine, w [Fun] [Int] = wrap,":
- " ch [Fun] = change head, d = delete, s [Int] = select," :
- " x [Var] [Var] = alpha convert." :
- "Commands changing the environment:" :
- " i [file] = import, e = empty." :
- "Other commands:" :
- " a = random, v = change view, u = undo, h = help, q = quit," :
- " ml [Lang] = change menu language," :
- " ms (short | long) = change menu command size," :
- " mt (typed | untyped) = change menu item typing," :
- " p [string] = refine by parsing, g [term] = refine by term," :
- " > = down, < = up, ' = top, >> = next meta, << = previous meta." :
----- (" c [" ++ unwords (intersperse "|" allTermCommands) ++ "] = modify term") :
----- (" f [" ++ unwords (intersperse "|" allStringCommands) ++ "] = modify output") :
- []
-
-initEditMsgEmpty :: CEnv -> String
-initEditMsgEmpty env = initEditMsg env +++++ unlines (
- "Start editing by n Cat selecting category\n\n" :
- "-------------\n" :
- ["n" +++ cat | (_,cat) <- newCatMenu env]
- )
-
-showCurrentState :: CEnv -> SState -> String
-showCurrentState env' state' =
- unlines (tr ++ ["",""] ++ msg ++ ["",""] ++ map fst menu)
- where (tr,msg,menu) = displaySStateIn env' state'
-
--- | to read position; borrowed from Prelude; should be elsewhere
-readIntList :: String -> [Int]
-readIntList s = case [x | (x,t) <- reads s, ("","") <- lex t] of
- [x] -> x
- _ -> []