on master help sign in
Generate exports aware of the new Elm.Main.init convention
123a4fbEvan Czaplicki
compiler/src/Generate/JavaScript.hs+19−17
@@ -498,23 +498,25 @@ toMainExports mode mains =
498generateExports :: Mode.Mode -> Trie -> B.Builder
498generateExports :: Mode.Mode -> Trie -> B.Builder
499generateExports mode (Trie maybeMain subs) =
499generateExports mode (Trie maybeMain subs) =
500 let
500 let
501− object =
501+ starter end =
502+ case maybeMain of
503+ Nothing ->
504+ "{"
505+
506+ Just (home, main) ->
507+ "{'init':"
508+ <> JS.exprToBuilder (Expr.generateMain mode home main)
509+ <> end
510+ in
502− case Map.toList subs of
511+ case Map.toList subs of
503− [] ->
512+ [] ->
504− "{}"
513+ starter "" <> "}"
505−
514+
506− (name, subTrie) : otherSubTries ->
515+ (name, subTrie) : otherSubTries ->
516+ starter "," <>
507− "{'" <> Text.encodeUtf8Builder name <> "':"
517+ "'" <> Text.encodeUtf8Builder name <> "':"
508− <> generateExports mode subTrie
518+ <> generateExports mode subTrie
509− <> List.foldl' (addSubTrie mode) "}" otherSubTries
519+ <> List.foldl' (addSubTrie mode) "}" otherSubTries
510− in
511− case maybeMain of
512− Nothing ->
513− object
514−
515− Just (home, main) ->
516− let initialize = Expr.generateMain mode home main in
517− JS.exprToBuilder initialize <> "(" <> object <> ")"
518
520
519
521
520addSubTrie :: Mode.Mode -> B.Builder -> (Text.Text, Trie) -> B.Builder
522addSubTrie :: Mode.Mode -> B.Builder -> (Text.Text, Trie) -> B.Builder