on master help sign in
Replace occurrences of "_elm" with variable
aac76a9Evan Czaplicki
src/Generate/JavaScript.hs+11−6
@@ -31,6 +31,11 @@ varDecl x expr =
31 VarDecl () (var x) (Just expr)
31 VarDecl () (var x) (Just expr)
32
32
33
33
34+localRuntime :: String
35+localRuntime =
36+ "_elm"
37+
38+
34internalImports :: Module.Name -> [VarDecl ()]
39internalImports :: Module.Name -> [VarDecl ()]
35internalImports name =
40internalImports name =
36 [ varDecl "_N" (obj ["Elm","Native"])
41 [ varDecl "_N" (obj ["Elm","Native"])
@@ -42,7 +47,7 @@ internalImports name =
42 where
47 where
43 include :: String -> String -> VarDecl ()
48 include :: String -> String -> VarDecl ()
44 include alias modul =
49 include alias modul =
45− varDecl alias (obj ["_N", modul, "make"] <| ref "_elm")
50+ varDecl alias (obj ["_N", modul, "make"] <| ref localRuntime)
46
51
47
52
48_Utils :: String -> Expression ()
53_Utils :: String -> Expression ()
@@ -318,19 +323,19 @@ flattenLets defs lexpr@(A _ expr) =
318generate :: CanonicalModule -> String
323generate :: CanonicalModule -> String
319generate modul =
324generate modul =
320 show . prettyPrint $ setup "Elm" (names ++ ["make"]) ++
325 show . prettyPrint $ setup "Elm" (names ++ ["make"]) ++
321− [ assign ("Elm" : names ++ ["make"]) (function ["_elm"] programStmts) ]
326+ [ assign ("Elm" : names ++ ["make"]) (function [localRuntime] programStmts) ]
322 where
327 where
323 names :: [String]
328 names :: [String]
324 names = Module.names modul
329 names = Module.names modul
325
330
326 thisModule :: Expression ()
331 thisModule :: Expression ()
327− thisModule = obj ("_elm" : names ++ ["values"])
332+ thisModule = obj (localRuntime : names ++ ["values"])
328
333
329 programStmts :: [Statement ()]
334 programStmts :: [Statement ()]
330 programStmts =
335 programStmts =
331 concat
336 concat
332 [ [ ExprStmt () (string "use strict") ]
337 [ [ ExprStmt () (string "use strict") ]
333− , setup "_elm" (names ++ ["values"])
338+ , setup localRuntime (names ++ ["values"])
334 , [ IfSingleStmt () thisModule (ret thisModule) ]
339 , [ IfSingleStmt () thisModule (ret thisModule) ]
335 , [ VarDeclStmt () localVars ]
340 , [ VarDeclStmt () localVars ]
336 , body
341 , body
@@ -350,7 +355,7 @@ generate modul =
350 jsImport :: Module.Name -> VarDecl ()
355 jsImport :: Module.Name -> VarDecl ()
351 jsImport name =
356 jsImport name =
352 varDecl (Var.moduleName name) $
357 varDecl (Var.moduleName name) $
353− obj ("Elm" : name ++ ["make"]) <| ref "_elm"
358+ obj ("Elm" : name ++ ["make"]) <| ref localRuntime
354
359
355 body :: [Statement ()]
360 body :: [Statement ()]
356 body = concat $ evalState defs 0
361 body = concat $ evalState defs 0
@@ -362,7 +367,7 @@ generate modul =
362 create name = assign name (InfixExpr () OpLOr (obj name) (ObjectLit () []))
367 create name = assign name (InfixExpr () OpLOr (obj name) (ObjectLit () []))
363 paths = drop 2 . init . List.inits $ namespace : path
368 paths = drop 2 . init . List.inits $ namespace : path
364
369
365− jsExports = assign ("_elm" : names ++ ["values"]) (ObjectLit () exs)
370+ jsExports = assign (localRuntime : names ++ ["values"]) (ObjectLit () exs)
366 where
371 where
367 exs = map entry $ "_op" : concatMap extract (exports modul)
372 exs = map entry $ "_op" : concatMap extract (exports modul)
368 entry x = (prop x, ref x)
373 entry x = (prop x, ref x)