forked from GitHub/gf-core
gfse: text mode editing: accept grammars with printname judgements
But printname judgements are ignored for now. Also fixed an UTF-8 encoding bug when parsing uploaded grammars in gf -server mode.
This commit is contained in:
@@ -27,7 +27,7 @@ import Text.JSON(encode,showJSON,makeObj)
|
|||||||
import System.IO.Silently(hCapture)
|
import System.IO.Silently(hCapture)
|
||||||
import System.Process(readProcessWithExitCode)
|
import System.Process(readProcessWithExitCode)
|
||||||
import System.Exit(ExitCode(..))
|
import System.Exit(ExitCode(..))
|
||||||
import Codec.Binary.UTF8.String(encodeString)
|
import Codec.Binary.UTF8.String(decodeString,encodeString)
|
||||||
import GF.Infra.UseIO(readBinaryFile,writeBinaryFile)
|
import GF.Infra.UseIO(readBinaryFile,writeBinaryFile)
|
||||||
import qualified PGFService as PS
|
import qualified PGFService as PS
|
||||||
import qualified ExampleService as ES
|
import qualified ExampleService as ES
|
||||||
@@ -158,7 +158,8 @@ handle state0 cache execute1
|
|||||||
let state' = maybe state (flip (M.insert dir) state) st'
|
let state' = maybe state (flip (M.insert dir) state) st'
|
||||||
return (state',ok200 output)
|
return (state',ok200 output)
|
||||||
|
|
||||||
parse qs = return (state,json200 (makeObj (map parseModule qs)))
|
parse qs =
|
||||||
|
return (state,json200 (makeObj(map(parseModule.apBoth decodeString) qs)))
|
||||||
|
|
||||||
cloud dir cmd qs =
|
cloud dir cmd qs =
|
||||||
case cmd of
|
case cmd of
|
||||||
@@ -382,6 +383,7 @@ removeDir dir =
|
|||||||
toHeader "Content-Type" = FCGI.HttpContentType -- to avoid duplicate headers
|
toHeader "Content-Type" = FCGI.HttpContentType -- to avoid duplicate headers
|
||||||
toHeader s = FCGI.HttpExtensionHeader s -- cheating a bit
|
toHeader s = FCGI.HttpExtensionHeader s -- cheating a bit
|
||||||
-}
|
-}
|
||||||
|
|
||||||
-- * misc utils
|
-- * misc utils
|
||||||
|
|
||||||
|
|
||||||
@@ -392,5 +394,6 @@ inputs = queryToArguments . fixplus
|
|||||||
decode c = [c]
|
decode c = [c]
|
||||||
|
|
||||||
mapFst f xys = [(f x,y)|(x,y)<-xys]
|
mapFst f xys = [(f x,y)|(x,y)<-xys]
|
||||||
|
apBoth f (x,y) = (f x,f y)
|
||||||
|
|
||||||
prop n v = (n,showJSON v)
|
prop n v = (n,showJSON v)
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ convOpen o =
|
|||||||
_ -> fail "unsupported module open"
|
_ -> fail "unsupported module open"
|
||||||
|
|
||||||
|
|
||||||
data CncJment = Pa S.Param | LC Lincat | Op Oper | Li Lin
|
data CncJment = Pa S.Param | LC Lincat | Op Oper | Li Lin | Ignored
|
||||||
|
|
||||||
convCncJments = mapM convCncJment . Map.toList
|
convCncJments = mapM convCncJment . Map.toList
|
||||||
|
|
||||||
@@ -111,13 +111,14 @@ convCncJment (name,jment) =
|
|||||||
case jment of
|
case jment of
|
||||||
ResParam ops _ ->
|
ResParam ops _ ->
|
||||||
return $ Pa $ Param i (maybe "" (render . ppParams q . unLoc) ops)
|
return $ Pa $ Param i (maybe "" (render . ppParams q . unLoc) ops)
|
||||||
CncCat (Just (L _ typ)) Nothing Nothing _ ->
|
ResValue _ -> return Ignored
|
||||||
|
CncCat (Just (L _ typ)) Nothing pprn _ -> -- ignores printname !!
|
||||||
return $ LC $ Lincat i (render $ ppTerm q 0 typ)
|
return $ LC $ Lincat i (render $ ppTerm q 0 typ)
|
||||||
ResOper oltyp (Just lterm) -> return $ Op $ Oper lhs rhs
|
ResOper oltyp (Just lterm) -> return $ Op $ Oper lhs rhs
|
||||||
where
|
where
|
||||||
lhs = i++maybe "" ((" : "++) . render . ppTerm q 0 . unLoc) oltyp
|
lhs = i++maybe "" ((" : "++) . render . ppTerm q 0 . unLoc) oltyp
|
||||||
rhs = " = "++render (ppTerm q 0 (unLoc lterm))
|
rhs = " = "++render (ppTerm q 0 (unLoc lterm))
|
||||||
CncFun _ (Just ldef) Nothing _ ->
|
CncFun _ (Just ldef) pprn _ -> -- ignores printname !!
|
||||||
do let (xs,e') = getAbs (unLoc ldef)
|
do let (xs,e') = getAbs (unLoc ldef)
|
||||||
lin = render $ ppTerm q 0 e'
|
lin = render $ ppTerm q 0 e'
|
||||||
args <- mapM convBind xs
|
args <- mapM convBind xs
|
||||||
|
|||||||
@@ -536,7 +536,7 @@ function text_mode(g,file,ix) {
|
|||||||
var mode_button=div_class("right",[button("Guided mode",switch_to_guided_mode)])
|
var mode_button=div_class("right",[button("Guided mode",switch_to_guided_mode)])
|
||||||
clear(file)
|
clear(file)
|
||||||
appendChildren(file,[mode_button,ta])
|
appendChildren(file,[mode_button,ta])
|
||||||
ta.style.height=ta.scrollHeight+"px";
|
//ta.style.height=ta.scrollHeight+"px";
|
||||||
ta.focus();
|
ta.focus();
|
||||||
}
|
}
|
||||||
var mode_button=div_class("right",[button("Text mode",switch_to_text_mode)])
|
var mode_button=div_class("right",[button("Text mode",switch_to_text_mode)])
|
||||||
|
|||||||
Reference in New Issue
Block a user