@@ -2,14 +2,13 @@
22{-# LANGUAGE OverloadedStrings #-}
33module Elm.Compiler.Module
44 -- interfaces
5− ( Module.Interface
6− , Module.Interfaces
7− , Module.privatize
5+ ( I.Interface
6+ , I.Interfaces
87 , interfaceAliasedTypes
98 , programTypes
109
1110 -- module names
12− , ModuleName.Raw
11+ , Raw
1312 , nameToPath
1413 , nameToString
1514 , nameFromText
@@ -20,7 +19,6 @@ module Elm.Compiler.Module
2019
2120 -- canonical names
2221 , ModuleName.Canonical(..)
23− , canonicalToMain
2422 )
2523 where
2624
@@ -28,14 +26,13 @@ import qualified Data.Char as Char
2826import qualified Data.List as List
2927import qualified Data.Map as Map
3028import qualified Data.Text as Text
31−import Data.Text (Text)
3229import System.FilePath ((</>))
3330
34−import qualified AST.Module as Module
3531import qualified AST.Module.Name as ModuleName
36−import qualified Elm.Compiler.Type as PublicType
32+import qualified Elm.Compiler.Type as Type
3733import qualified Elm.Compiler.Type.Extract as Extract
38−import qualified Generate.JavaScript.Variable as JS
34+import qualified Elm.Interface as I
35+import qualified Elm.Name as N
3936import qualified Json.Decode as Decode
4037import qualified Json.Encode as Encode
4138
@@ -44,46 +41,49 @@ import qualified Json.Encode as Encode
4441-- INTERFACES
4542
4643
47−interfaceAliasedTypes :: Module.Interface -> Map.Map Text PublicType.Type
44+interfaceAliasedTypes :: I.Interface -> Map.Map N.Name Type.Type
4845interfaceAliasedTypes interface =
49− Map.map Extract.extract (Module.iTypes interface)
46+ Map.map Extract.fromAnnotation (I._types interface)
5047
5148
52−programTypes :: Module.Interfaces -> ModuleName.Canonical -> Maybe PublicType.Program
49+programTypes :: I.Interfaces -> ModuleName.Canonical -> Maybe Type.Program
5350programTypes =
54− Extract.extractProgram
51+ Extract.fromProgram
5552
5653
5754
5855-- NAMES
5956
6057
61−nameToPath :: ModuleName.Raw -> FilePath
58+type Raw = N.Name
59+
60+
61+nameToPath :: Raw -> FilePath
6262nameToPath name =
6363 List.foldl1 (</>) (map Text.unpack (Text.splitOn "." name))
6464
6565
66−nameToString :: ModuleName.Raw -> String
66+nameToString :: Raw -> String
6767nameToString name =
6868 Text.unpack name
6969
7070
71−nameFromText :: Text -> Maybe ModuleName.Raw
71+nameFromText :: Text.Text -> Maybe Raw
7272nameFromText =
7373 fromText '.'
7474
7575
76−hyphenate :: ModuleName.Raw -> Text
76+hyphenate :: Raw -> Text.Text
7777hyphenate name =
7878 Text.replace "." "-" name
7979
8080
81−dehyphenate :: Text -> Maybe ModuleName.Raw
81+dehyphenate :: Text.Text -> Maybe Raw
8282dehyphenate =
8383 fromText '-'
8484
8585
86−fromText :: Char -> Text -> Maybe ModuleName.Raw
86+fromText :: Char -> Text.Text -> Maybe Raw
8787fromText sep name =
8888 let
8989 chunks =
@@ -92,7 +92,7 @@ fromText sep name =
9292 if all isGoodChunk chunks then Just name else Nothing
9393
9494
95−isGoodChunk :: Text -> Bool
95+isGoodChunk :: Text.Text -> Bool
9696isGoodChunk chunk =
9797 case Text.uncons chunk of
9898 Nothing ->
@@ -111,12 +111,12 @@ isGoodChar char =
111111-- JSON
112112
113113
114−encode :: ModuleName.Raw -> Encode.Value
114+encode :: Raw -> Encode.Value
115115encode =
116116 Encode.text
117117
118118
119−decoder :: Decode.Decoder ModuleName.Raw
119+decoder :: Decode.Decoder Raw
120120decoder =
121121 do txt <- Decode.text
122122 case nameFromText txt of
@@ -125,12 +125,3 @@ decoder =
125125
126126 Just name ->
127127 Decode.succeed name
128−
129−
130−
131−-- CANONICAL TO MAIN
132−
133−
134−canonicalToMain :: ModuleName.Canonical -> Text
135−canonicalToMain home =
136− JS.globalToName home "main"