From d925bb35c1a801f0cecee753fea714e279f0ecbd Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 9 Dec 2008 14:52:12 +0000 Subject: Editor with some commands, using PGF API, with demo shell in exper/EditShell; still buggy --- src/exper/EditShell.hs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/exper/EditShell.hs (limited to 'src/exper/EditShell.hs') diff --git a/src/exper/EditShell.hs b/src/exper/EditShell.hs new file mode 100644 index 000000000..a50317d47 --- /dev/null +++ b/src/exper/EditShell.hs @@ -0,0 +1,39 @@ +module Main where + +import PGF.Editor +import PGF + +import System (getArgs) + +main = do + putStrLn "Hi, I'm the Editor!" + file:_ <- getArgs + pgf <- readPGF file + let dict = pgf2dict pgf + let st0 = new (startCat pgf) + editLoop pgf dict st0 + +editLoop :: PGF -> Dict -> State -> IO State +editLoop pgf dict st = do + putStrLn ("I want something of type " ++ prCId (focusType st)) + c <- getLine + st' <- interpret pgf dict st c + let t = etree2tree (tree st') + putStrLn (unlines ([ + "Now I have", + showTree t] ++ + linearizeAll pgf t)) + editLoop pgf dict st' + +interpret :: PGF -> Dict -> State -> String -> IO State +interpret pgf dict st c = case words c of + "r":f:_ -> do + return $ goNextMeta (refine dict (mkCId f) st) + "m":_ -> do + putStrLn (unwords (map (prCId . fst) (refineMenu dict st))) + return st + _ -> do + putStrLn "command not understood" + return st + + -- cgit v1.2.3