@@ -283,23 +283,16 @@ jsModule modul =
283 , "e.initEvent('", js, "_' + elm.id, true, true);"
283 , "e.initEvent('", js, "_' + elm.id, true, true);"
284 , "e.value = v;"
284 , "e.value = v;"
285 , "document.dispatchEvent(e); return v; }, ", elm, ");" ]
285 , "document.dispatchEvent(e); return v; }, ", elm, ");" ]
287−jsImport (modul, method) =
288− concat $ zipWith3 (\s n v -> s ++ assign' n v ++ ";") starters subnames values
290− starters = "\nvar " : repeat "\n"
291− values = map (\name -> name ++ " || {}") (init subnames) ++
292− ["Elm." ++ modul ++ parens "elm"]
293− subnames = map dotSep . tail . List.inits $ split modul
295− split names = case go [] names of
296− (name, []) -> [name]
297− (name, ns) -> name : split ns
298− go name str = case str of
299− '.':rest -> (reverse name, rest)
300− c:rest -> go (c:name) rest
301− [] -> (reverse name, [])
287+jsImport (modul, _) = map (ExprStmt ()) exprs
289+ assign name = AssignExpr () OpAssign (LDot () (dotSep (init name)) (last name))
290+ setup name = assign name (InfixExpr () OpLOr (dotSep name) (ObjectLit () []))
291+ exprs = map setup (drop 2 . init $ List.inits path) ++
292+ [ assign path (dotSep path <| ref "elm") ]
303binop span op e1 e2 =
296binop span op e1 e2 =
304 case op of
297 case op of
305 "Basics.." -> ["$"] ==> foldr (<|) (ref "$") (map expression (e1 : collect [] e2))
298 "Basics.." -> ["$"] ==> foldr (<|) (ref "$") (map expression (e1 : collect [] e2))