summaryrefslogtreecommitdiff
path: root/src/GF
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF')
-rw-r--r--src/GF/Canon/CanonToJS.hs13
-rw-r--r--src/GF/Devel/GFCCtoJS.hs13
2 files changed, 20 insertions, 6 deletions
diff --git a/src/GF/Canon/CanonToJS.hs b/src/GF/Canon/CanonToJS.hs
index 78f641139..3bd44eedd 100644
--- a/src/GF/Canon/CanonToJS.hs
+++ b/src/GF/Canon/CanonToJS.hs
@@ -63,7 +63,7 @@ term2js l t = f t
case t of
C.R xs -> new "Arr" (map f xs)
C.P x y -> JS.ECall (JS.EMember (f x) (JS.Ident "sel")) [f y]
- C.S xs -> new "Seq" (map f xs)
+ C.S xs -> mkSeq (map f xs)
C.K t -> tokn2js t
C.V i -> JS.EIndex (JS.EVar children) (JS.EInt i)
C.C i -> new "Int" [JS.EInt i]
@@ -74,8 +74,15 @@ term2js l t = f t
C.TM -> new "Meta" []
tokn2js :: C.Tokn -> JS.Expr
-tokn2js (C.KS s) = new "Str" [JS.EStr s]
-tokn2js (C.KP ss vs) = new "Seq" (map JS.EStr ss) -- FIXME
+tokn2js (C.KS s) = mkStr s
+tokn2js (C.KP ss vs) = mkSeq (map mkStr ss) -- FIXME
+
+mkStr :: String -> JS.Expr
+mkStr s = new "Str" [JS.EStr s]
+
+mkSeq :: [JS.Expr] -> JS.Expr
+mkSeq [x] = x
+mkSeq xs = new "Seq" xs
argIdent :: Integer -> JS.Ident
argIdent n = JS.Ident ("x" ++ show n)
diff --git a/src/GF/Devel/GFCCtoJS.hs b/src/GF/Devel/GFCCtoJS.hs
index eef46e9cc..65d3185e2 100644
--- a/src/GF/Devel/GFCCtoJS.hs
+++ b/src/GF/Devel/GFCCtoJS.hs
@@ -55,7 +55,7 @@ term2js l t = f t
case t of
C.R xs -> new "Arr" (map f xs)
C.P x y -> JS.ECall (JS.EMember (f x) (JS.Ident "sel")) [f y]
- C.S xs -> new "Seq" (map f xs)
+ C.S xs -> mkSeq (map f xs)
C.K t -> tokn2js t
C.V i -> JS.EIndex (JS.EVar children) (JS.EInt i)
C.C i -> new "Int" [JS.EInt i]
@@ -66,8 +66,15 @@ term2js l t = f t
C.TM -> new "Meta" []
tokn2js :: C.Tokn -> JS.Expr
-tokn2js (C.KS s) = new "Str" [JS.EStr s]
-tokn2js (C.KP ss vs) = new "Seq" (map JS.EStr ss) -- FIXME
+tokn2js (C.KS s) = mkStr s
+tokn2js (C.KP ss vs) = mkSeq (map mkStr ss) -- FIXME
+
+mkStr :: String -> JS.Expr
+mkStr s = new "Str" [JS.EStr s]
+
+mkSeq :: [JS.Expr] -> JS.Expr
+mkSeq [x] = x
+mkSeq xs = new "Seq" xs
argIdent :: Integer -> JS.Ident
argIdent n = JS.Ident ("x" ++ show n)