on 27ffde4 help sign in
elk/src/Elm/Compiler/Objects.hs
60 lines 1.0 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler.Objects
3 ( JS.Mode(..)
4 , JS.generate
5 , JS.Roots
6 , mains
7 , value
8 , Opt.Graph
9 , empty
10 , union
11 , unions
12 ,
13 )
14 where
17import qualified Data.List as List
18import qualified Data.Map as Map
19import qualified Data.Text as Text
21import qualified AST.Optimized as Opt
22import qualified AST.Module.Name as ModuleName
23import qualified Generate.JavaScript as JS
27-- ROOTS
30mains :: [ModuleName.Canonical] -> JS.Roots
31mains =
32 JS.Mains
35value :: ModuleName.Canonical -> String -> JS.Roots
36value home name =
37 JS.Value home (Text.pack name)
41-- COMBINE GRAPHS
44{-# NOINLINE empty #-}
45empty :: Opt.Graph
46empty =
47 Opt.Graph Map.empty Map.empty Map.empty
50union :: Opt.Graph -> Opt.Graph -> Opt.Graph
51union (Opt.Graph mains1 graph1 fields1) (Opt.Graph mains2 graph2 fields2) =
52 Opt.Graph
53 (Map.union mains1 mains2)
54 (Map.union graph1 graph2)
55 (Map.union fields1 fields2)
58unions :: [Opt.Graph] -> Opt.Graph
59unions graphs =
60 List.foldl' union empty graphs