@@ -69,14 +69,42 @@ fromKernels kernels =
6969 Opt.Graph
7070 Map.empty
7171 (Map.mapKeys toGlobal (Map.map toNode kernels))
72− Map.empty
72+ (Map.foldl' addKernel Map.empty kernels)
73+
74+
75+
76+-- KERNEL TO NODES
7377
7478
7579toGlobal :: N.Name -> Opt.Global
7680toGlobal home =
77− Opt.Global (ModuleName.Canonical Pkg.kernel home) N.dollar
81+ Opt.Global (ModuleName.Canonical Pkg.kernel (ModuleName.getKernel home)) N.dollar
7882
7983
8084toNode :: Kernel -> Opt.Node
8185toNode (Kernel client server) =
8286 Opt.Kernel client server
87+
88+
89+
90+-- KERNEL TO ELM FIELDS
91+
92+
93+addKernel :: Map.Map N.Name Int -> Kernel -> Map.Map N.Name Int
94+addKernel fields (Kernel client maybeServer) =
95+ addContent (maybe fields (addContent fields) maybeServer) client
96+
97+
98+addContent :: Map.Map N.Name Int -> Opt.KContent -> Map.Map N.Name Int
99+addContent fields (Opt.KContent chunks _) =
100+ List.foldl' addChunk fields chunks
101+
102+
103+addChunk :: Map.Map N.Name Int -> Opt.KChunk -> Map.Map N.Name Int
104+addChunk fields chunk =
105+ case chunk of
106+ Opt.ElmField name ->
107+ Map.insertWith (+) name 1 fields
108+
109+ _ ->
110+ fields