mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-12 14:29:31 -06:00
63 lines
1.7 KiB
Haskell
63 lines
1.7 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : (Module)
|
|
-- Maintainer : (Maintainer)
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- > CVS $Date $
|
|
-- > CVS $Author $
|
|
-- > CVS $Revision $
|
|
--
|
|
-- (Description of the module)
|
|
-----------------------------------------------------------------------------
|
|
|
|
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
|