summaryrefslogtreecommitdiff
path: root/src/GF/Shell/JGF.hs
diff options
context:
space:
mode:
authoraarne <unknown>2003-09-22 13:16:55 +0000
committeraarne <unknown>2003-09-22 13:16:55 +0000
commitb1402e8bd6a68a891b00a214d6cf184d66defe19 (patch)
tree90372ac4e53dce91cf949dbf8e93be06f1d9e8bd /src/GF/Shell/JGF.hs
Founding the newly structured GF2.0 cvs archive.
Diffstat (limited to 'src/GF/Shell/JGF.hs')
-rw-r--r--src/GF/Shell/JGF.hs59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/GF/Shell/JGF.hs b/src/GF/Shell/JGF.hs
new file mode 100644
index 000000000..215ad3e3e
--- /dev/null
+++ b/src/GF/Shell/JGF.hs
@@ -0,0 +1,59 @@
+module JGF where
+
+import Operations
+import UseIO
+
+import IOGrammar
+import Option
+import ShellState
+import Session
+import Commands
+import CommandL
+
+import System
+import UTF8
+
+
+-- GF editing session controlled by e.g. a Java program. AR 16/11/2001
+
+sessionLineJ :: ShellState -> IO ()
+sessionLineJ env = do
+ putStrLnFlush $ initEditMsgJavaX env
+ let env' = addGlobalOptions (options [sizeDisplay "short"]) env
+ editLoopJ env' (initSState)
+
+editLoopJ :: CEnv -> SState -> IO ()
+editLoopJ = editLoopJnewX
+
+-- this is the real version, with XML
+
+editLoopJnewX :: CEnv -> SState -> IO ()
+editLoopJnewX env state = do
+ c <- getCommandUTF
+ case c of
+ CQuit -> return ()
+
+ c -> do
+ (env',state') <- execCommand env c state
+ let package = case c of
+ CCEnvImport _ -> initAndEditMsgJavaX env' state'
+ CCEnvEmptyAndImport _ -> initAndEditMsgJavaX env' state'
+ CCEnvOpenTerm _ -> initAndEditMsgJavaX env' state'
+ CCEnvOpenString _ -> initAndEditMsgJavaX env' state'
+ CCEnvEmpty -> initEditMsgJavaX env'
+ _ -> displaySStateJavaX env' state'
+ putStrLnFlush package
+ editLoopJnewX env' state'
+
+welcome =
+ "An experimental GF Editor for Java." ++
+ "(c) Kristofer Johannisson, Janna Khegai, and Aarne Ranta 2002 under CNU GPL."
+
+initEditMsgJavaX env = encodeUTF8 $ unlines $ tagXML "gfinit" $
+ tagsXML "newcat" [["n" +++ cat] | (_,cat) <- newCatMenu env] ++
+ tagXML "language" [prLanguage langAbstract] ++
+ concat [tagAttrXML "language" ("file",file) [prLanguage lang] |
+ (file,lang) <- zip (allGrammarFileNames env) (allLanguages env)]
+
+initAndEditMsgJavaX env state =
+ initEditMsgJavaX env ++++ displaySStateJavaX env state