mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 13:09:33 -06:00
49 lines
1.3 KiB
Haskell
49 lines
1.3 KiB
Haskell
module SubShell where
|
|
|
|
import Operations
|
|
import UseIO
|
|
import ShellState
|
|
import Option
|
|
import API
|
|
|
|
import CommandL
|
|
import ArchEdit
|
|
|
|
import List
|
|
|
|
-- AR 20/4/2000 -- 12/11/2001
|
|
|
|
editSession :: Options -> ShellState -> IO ()
|
|
editSession opts st
|
|
| oElem makeFudget opts = fudlogueEdit font st'
|
|
| otherwise = initEditLoop st' (return ())
|
|
where
|
|
st' = addGlobalOptions opts st
|
|
font = maybe myUniFont mkOptFont $ getOptVal opts useFont
|
|
|
|
myUniFont = "-mutt-clearlyu-medium-r-normal--0-0-100-100-p-0-iso10646-1"
|
|
mkOptFont = id
|
|
|
|
translateSession :: Options -> ShellState -> IO ()
|
|
translateSession opts st = do
|
|
let grs = allStateGrammars st
|
|
cat = firstCatOpts opts (firstStateGrammar st)
|
|
trans s = unlines $
|
|
if oElem showLang opts then
|
|
sort $ [l +++ ":" +++ s | (l,s) <- zip (map (prIdent . cncId) grs)
|
|
(translateBetweenAll grs cat s)]
|
|
else translateBetweenAll grs cat s
|
|
translateLoop opts trans
|
|
|
|
translateLoop opts trans = do
|
|
let fud = oElem makeFudget opts
|
|
font = maybe myUniFont mkOptFont $ getOptVal opts useFont
|
|
if fud then fudlogueWrite font trans else loopLine
|
|
where
|
|
loopLine = do
|
|
putStrFlush "trans> "
|
|
s <- getLine
|
|
if s == "." then return () else do
|
|
putStrLnFlush $ trans s
|
|
loopLine
|