@@ -1,6 +1,7 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler.Objects
2module Elm.Compiler.Objects
3 ( JS.Mode(..)
3 ( JS.Mode(..)
4 , JS.generate
5 , JS.generate
@@ -8,19 +9,21 @@ module Elm.Compiler.Objects
8 , Opt.Graph
9 , Opt.Graph
11− , unions
12+ , Kernel(..)
17−import qualified Data.List as List
18import qualified Data.Map as Map
18import qualified Data.Map as Map
19import qualified Data.Text as Text
19import qualified Data.Text as Text
21import qualified AST.Optimized as Opt
21import qualified AST.Optimized as Opt
22import qualified AST.Module.Name as ModuleName
22import qualified AST.Module.Name as ModuleName
23+import qualified Elm.Name as N
24+import qualified Elm.Package as Pkg
23import qualified Generate.JavaScript as JS
25import qualified Generate.JavaScript as JS
26+import qualified Generate.JavaScript.Name as Name
@@ -55,6 +58,30 @@ union (Opt.Graph mains1 graph1 fields1) (Opt.Graph mains2 graph2 fields2) =
55 (Map.union fields1 fields2)
58 (Map.union fields1 fields2)
58−unions :: [Opt.Graph] -> Opt.Graph
61+
59−unions graphs =
62+-- KERNEL GRAPHS
60− List.foldl' union empty graphs
63+
67+ { _client :: Opt.KContent
68+ , _server :: Maybe Opt.KContent
72+fromKernels :: Map.Map N.Name Kernel -> Opt.Graph
76+ (Map.mapKeys toGlobal (Map.map toNode kernels))
80+toGlobal :: N.Name -> Opt.Global
82+ Opt.Global (ModuleName.Canonical Pkg.kernel home) N.dollar
85+toNode :: Kernel -> Opt.Node
86+toNode (Kernel client server) =
87+ Opt.Kernel client server