1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler.Objects
16import qualified Data.List as List
17import qualified Data.Map as Map
18import qualified Data.Name as Name
20import qualified AST.Optimized as Opt
21import qualified Elm.ModuleName as ModuleName
22import qualified Elm.Package as Pkg
23import qualified Generate.JavaScript as JS
33 Opt.Graph Map.empty Map.empty Map.empty
36union :: Opt.Graph -> Opt.Graph -> Opt.Graph
37union (Opt.Graph mains1 graph1 fields1) (Opt.Graph mains2 graph2 fields2) =
39 (Map.union mains1 mains2)
40 (Map.union graph1 graph2)
41 (Map.union fields1 fields2)
44unions :: [Opt.Graph] -> Opt.Graph
51 List.foldl' union g gs
60 { _client :: Opt.KContent
61 , _server :: Maybe Opt.KContent
65fromKernels :: Map.Map Name.Name Kernel -> Opt.Graph
69 (Map.mapKeys toGlobal (Map.map toNode kernels))
70 (Map.foldl' addKernel Map.empty kernels)
77toGlobal :: Name.Name -> Opt.Global
79 Opt.Global (ModuleName.Canonical Pkg.kernel (Name.getKernel home)) Name.dollar
82toNode :: Kernel -> Opt.Node
83toNode (Kernel client server) =
84 Opt.Kernel client server
88-- KERNEL TO ELM FIELDS
91addKernel :: Map.Map Name.Name Int -> Kernel -> Map.Map Name.Name Int
92addKernel fields (Kernel client maybeServer) =
93 addContent (maybe fields (addContent fields) maybeServer) client
96addContent :: Map.Map Name.Name Int -> Opt.KContent -> Map.Map Name.Name Int
97addContent fields (Opt.KContent chunks _) =
98 List.foldl' addChunk fields chunks
101addChunk :: Map.Map Name.Name Int -> Opt.KChunk -> Map.Map Name.Name Int
102addChunk fields chunk =
105 Map.insertWith (+) name 1 fields
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list