From 44e0e0e3cd6844fc648f3efaaf8b81a8aefa4d3d Mon Sep 17 00:00:00 2001 From: krasimir Date: Tue, 18 Aug 2009 07:08:44 +0000 Subject: [PATCH] fix the unicode encoding problem with the cc command --- src/GF/Compile/Coding.hs | 17 ++++++++++------- src/GFI.hs | 5 +++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/GF/Compile/Coding.hs b/src/GF/Compile/Coding.hs index 0891c4546..c871f16a3 100644 --- a/src/GF/Compile/Coding.hs +++ b/src/GF/Compile/Coding.hs @@ -19,15 +19,18 @@ codeSourceModule :: (String -> String) -> SourceModule -> SourceModule codeSourceModule co (id,mo) = (id,replaceJudgements mo (mapTree codj (jments mo))) where codj (c,info) = case info of - ResOper pty pt -> ResOper (fmap codt pty) (fmap codt pt) - ResOverload es tyts -> ResOverload es [(codt ty,codt t) | (ty,t) <- tyts] - CncCat pty pt mpr -> CncCat pty (fmap codt pt) (fmap codt mpr) - CncFun mty pt mpr -> CncFun mty (fmap codt pt) (fmap codt mpr) + ResOper pty pt -> ResOper (fmap (codeTerm co) pty) (fmap (codeTerm co) pt) + ResOverload es tyts -> ResOverload es [(codeTerm co ty,codeTerm co t) | (ty,t) <- tyts] + CncCat pty pt mpr -> CncCat pty (fmap (codeTerm co) pt) (fmap (codeTerm co) mpr) + CncFun mty pt mpr -> CncFun mty (fmap (codeTerm co) pt) (fmap (codeTerm co) mpr) _ -> info - codt t = case t of + +codeTerm :: (String -> String) -> Term -> Term +codeTerm co t = case t of K s -> K (co s) - T ty cs -> T ty [(codp p,codt v) | (p,v) <- cs] - _ -> composSafeOp codt t + T ty cs -> T ty [(codp p,codeTerm co v) | (p,v) <- cs] + _ -> composSafeOp (codeTerm co) t + where codp p = case p of --- really: composOpPatt PR rs -> PR [(l,codp p) | (l,p) <- rs] PString s -> PString (co s) diff --git a/src/GFI.hs b/src/GFI.hs index f183d043c..5093884d9 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -16,6 +16,7 @@ import GF.Infra.Option import GF.System.Readline import GF.Text.Coding +import GF.Compile.Coding import PGF import PGF.Data @@ -106,10 +107,10 @@ loop opts gfenv0 = do pOpts style q ("-qual" :ws) = pOpts style Qualified ws pOpts style q ws = (style,q,unwords ws) - (style,q,s) = pOpts TermPrintDefault Qualified ws + (style,q,s) = pOpts TermPrintDefault Qualified (tail (words s0)) case runP pExp (BS.pack s) of Left (_,msg) -> putStrLn msg - Right t -> case checkTerm sgr t >>= computeTerm sgr of + Right t -> case checkTerm sgr (codeTerm (decode gfenv) t) >>= computeTerm sgr of Ok x -> putStrLn $ enc (showTerm style q x) Bad s -> putStrLn $ enc s loopNewCPU gfenv