on master help sign in
Allow outsiders to get the list of ports declared by a module
0c3034dEvan Czaplicki
src/Elm/Compiler/Module.hs+11
@@ -4,6 +4,7 @@ module Elm.Compiler.Module
4 , nameToString, nameFromString
4 , nameToString, nameFromString
5 , hyphenate, dehyphenate
5 , hyphenate, dehyphenate
6 , defaultImports
6 , defaultImports
7+ , interfacePorts
7 )
8 )
8 where
9 where
9
10
@@ -21,6 +22,7 @@ import qualified Transform.AddDefaultImports as Defaults
21
22
22type Interface = Module.Interface
23type Interface = Module.Interface
23
24
25+
24newtype Name = Name [String]
26newtype Name = Name [String]
25 deriving (Eq, Ord)
27 deriving (Eq, Ord)
26
28
@@ -30,6 +32,13 @@ defaultImports =
30 map Name (Map.keys Defaults.defaultImports)
32 map Name (Map.keys Defaults.defaultImports)
31
33
32
34
35+interfacePorts :: Interface -> [String]
36+interfacePorts interface =
37+ Module.iPorts interface
38+
39+
40+-- STRING CONVERSIONS
41+
33nameToPath :: Name -> FilePath
42nameToPath :: Name -> FilePath
34nameToPath (Name names) =
43nameToPath (Name names) =
35 List.foldl1 (</>) names
44 List.foldl1 (</>) names
@@ -74,6 +83,8 @@ fromString sep raw =
74 Char.isAlphaNum char || char `elem` "_'"
83 Char.isAlphaNum char || char `elem` "_'"
75
84
76
85
86+-- JSON CONVERSIONS
87+
77instance Json.ToJSON Name where
88instance Json.ToJSON Name where
78 toJSON name =
89 toJSON name =
79 Json.toJSON (nameToString name)
90 Json.toJSON (nameToString name)