on master help sign in
Update public API a bit
3b7f6ffEvan Czaplicki
src/Elm/Compiler.hs+3−2
@@ -18,6 +18,7 @@ module Elm.Compiler
18import qualified Data.Aeson as Json
18import qualified Data.Aeson as Json
19import qualified Data.ByteString as BS
19import qualified Data.ByteString as BS
20import qualified Data.Map as Map
20import qualified Data.Map as Map
21+import qualified Data.Text as Text
21import Text.PrettyPrint.ANSI.Leijen (Doc)
22import Text.PrettyPrint.ANSI.Leijen (Doc)
22
23
23import qualified Compile
24import qualified Compile
@@ -81,7 +82,7 @@ dummyLocalizer =
81-- ERRORS
82-- ERRORS
82
83
83
84
84−errorToDoc :: Localizer -> String -> String -> Error.Error -> Doc
85+errorToDoc :: Localizer -> String -> Text.Text -> Error.Error -> Doc
85errorToDoc (Localizer localizer) location source err =
86errorToDoc (Localizer localizer) location source err =
86 error "TODO Report.toDoc" location (Error.toReport localizer err) source
87 error "TODO Report.toDoc" location (Error.toReport localizer err) source
87
88
@@ -95,7 +96,7 @@ errorToJson (Localizer localizer) location err =
95-- WARNINGS
96-- WARNINGS
96
97
97
98
98−warningToDoc :: Localizer -> String -> String -> Warning.Warning -> Doc
99+warningToDoc :: Localizer -> String -> Text.Text -> Warning.Warning -> Doc
99warningToDoc (Localizer localizer) location source warning =
100warningToDoc (Localizer localizer) location source warning =
100 error "TODO Report.toDoc" location (Warning.toReport localizer warning) source
101 error "TODO Report.toDoc" location (Warning.toReport localizer warning) source
101
102
src/Elm/Compiler/Objects.hs+33−6
@@ -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+ , Name.Target(..)
4 , JS.generate
5 , JS.generate
5 , JS.Roots
6 , JS.Roots
6 , mains
7 , mains
@@ -8,19 +9,21 @@ module Elm.Compiler.Objects
8 , Opt.Graph
9 , Opt.Graph
9 , empty
10 , empty
10 , union
11 , union
11− , unions
12+ , Kernel(..)
12− ,
13+ , fromKernels
13 )
14 )
14 where
15 where
15
16
16
17
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
20
20
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
24
27
25
28
26
29
@@ -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)
56
59
57
60
58−unions :: [Opt.Graph] -> Opt.Graph
61+
59−unions graphs =
62+-- KERNEL GRAPHS
60− List.foldl' union empty graphs
63+
64+
65+data Kernel =
66+ Kernel
67+ { _client :: Opt.KContent
68+ , _server :: Maybe Opt.KContent
69+ }
70+
71+
72+fromKernels :: Map.Map N.Name Kernel -> Opt.Graph
73+fromKernels kernels =
74+ Opt.Graph
75+ Map.empty
76+ (Map.mapKeys toGlobal (Map.map toNode kernels))
77+ Map.empty
78+
79+
80+toGlobal :: N.Name -> Opt.Global
81+toGlobal home =
82+ Opt.Global (ModuleName.Canonical Pkg.kernel home) N.dollar
83+
84+
85+toNode :: Kernel -> Opt.Node
86+toNode (Kernel client server) =
87+ Opt.Kernel client server
src/Elm/Package.hs+1−1
@@ -6,7 +6,7 @@ module Elm.Package
6 , dummyName, kernel, core
6 , dummyName, kernel, core
7 , browser, virtualDom, html
7 , browser, virtualDom, html
8 , webgl, linearAlgebra
8 , webgl, linearAlgebra
9− , toString, toText, toUrl, toFilePath
9+ , toString, toUrl, toFilePath
10 , fromText
10 , fromText
11 , Version(..)
11 , Version(..)
12 , initialVersion, dummyVersion
12 , initialVersion, dummyVersion