on master help sign in
Properly escape strings.
73f7d7cevancz
elm/src/Gen/CompileToJS.hs+7−1
@@ -26,13 +26,19 @@ indent = concatMap f
26 f c = [c]
26 f c = [c]
27
27
28parens s = "(" ++ s ++ ")"
28parens s = "(" ++ s ++ ")"
29−quoted s = "'" ++ s ++ "'"
30braces s = "{" ++ s ++ "}"
29braces s = "{" ++ s ++ "}"
31jsList ss = "["++ intercalate "," ss ++"]"
30jsList ss = "["++ intercalate "," ss ++"]"
32jsFunc args body = "function(" ++ args ++ "){" ++ indent body ++ "}"
31jsFunc args body = "function(" ++ args ++ "){" ++ indent body ++ "}"
33assign x e = "\nvar " ++ x ++ "=" ++ e ++ ";"
32assign x e = "\nvar " ++ x ++ "=" ++ e ++ ";"
34ret e = "\nreturn "++ e ++";"
33ret e = "\nreturn "++ e ++";"
35iff a b c = a ++ "?" ++ b ++ ":" ++ c
34iff a b c = a ++ "?" ++ b ++ ":" ++ c
35+quoted s = "'" ++ concatMap f s ++ "'"
36+ where f '\n' = "\\n"
37+ f '\'' = "\\'"
38+ f '\t' = "\\t"
39+ f '\"' = "\\\""
40+ f '\\' = "\\\\"
41+ f c = [c]
36
42
37mainEquals s = globalAssign "Elm.main" (jsFunc "" (ret s))
43mainEquals s = globalAssign "Elm.main" (jsFunc "" (ret s))
38globalAssign m s = "\n" ++ m ++ "=" ++ s ++ ";"
44globalAssign m s = "\n" ++ m ++ "=" ++ s ++ ";"