@@ -1,12 +1,12 @@
11{-# OPTIONS_GHC -Wall #-}
22module Elm.Compiler
33 ( version
4− , parseDependencies, Tag(..)
54 , compile, Context(..), Result(..)
65 , generate
76 , Localizer, dummyLocalizer
87 , Error, errorToDoc, errorToJson
98 , Warning, warningToDoc, warningToJson
9+ , parseDependencies, Tag(..)
1010 )
1111 where
1212
@@ -49,46 +49,6 @@ version =
4949
5050
5151
52−-- DEPENDENCIES
53−
54−
55−data Tag = Normal | Effect | Port
56−
57−
58−parseDependencies :: Package.Name -> Text -> Either Error (Tag, Maybe M.Raw, [M.Raw])
59−parseDependencies pkgName sourceCode =
60− case Parse.run Parse.header sourceCode of
61− Right header ->
62− Right $ getDeps pkgName header
63−
64− Left err ->
65− Left (Error (A.map Error.Syntax err))
66−
67−
68−getDeps :: Package.Name -> Module.Header [Module.UserImport] -> (Tag, Maybe M.Raw, [M.Raw])
69−getDeps pkgName (Module.Header maybeHeaderDecl imports) =
70− let
71− dependencies =
72− if pkgName == Package.core
73− then map (fst . A.drop) imports
74− else map (fst . A.drop) imports ++ map fst Imports.defaults
75− in
76− case maybeHeaderDecl of
77− Nothing ->
78− ( Normal, Nothing, dependencies )
79−
80− Just (Module.HeaderDecl sourceTag name _ _ _) ->
81− let
82− tag =
83− case sourceTag of
84− Module.Normal -> Normal
85− Module.Port _ -> Port
86− Module.Effect _ -> Effect
87− in
88− ( tag, Just name, dependencies )
89−
90−
91−
9252-- COMPILATION
9353
9454
@@ -204,3 +164,43 @@ warningToDoc (Localizer localizer) location source (Warning (A.A region wrn)) =
204164warningToJson :: Localizer -> String -> Warning -> Json.Value
205165warningToJson (Localizer localizer) location (Warning wrn) =
206166 Warning.toJson localizer location wrn
167+
168+
169+
170+-- DEPENDENCIES
171+
172+
173+data Tag = Normal | Effect | Port
174+
175+
176+parseDependencies :: Package.Name -> Text -> Either Error (Tag, Maybe M.Raw, [M.Raw])
177+parseDependencies pkgName sourceCode =
178+ case Parse.run Parse.header sourceCode of
179+ Right header ->
180+ Right $ getDeps pkgName header
181+
182+ Left err ->
183+ Left (Error (A.map Error.Syntax err))
184+
185+
186+getDeps :: Package.Name -> Module.Header [Module.UserImport] -> (Tag, Maybe M.Raw, [M.Raw])
187+getDeps pkgName (Module.Header maybeHeaderDecl imports) =
188+ let
189+ dependencies =
190+ if pkgName == Package.core
191+ then map (fst . A.drop) imports
192+ else map (fst . A.drop) imports ++ map fst Imports.defaults
193+ in
194+ case maybeHeaderDecl of
195+ Nothing ->
196+ ( Normal, Nothing, dependencies )
197+
198+ Just (Module.HeaderDecl sourceTag name _ _ _) ->
199+ let
200+ tag =
201+ case sourceTag of
202+ Module.Normal -> Normal
203+ Module.Port _ -> Port
204+ Module.Effect _ -> Effect
205+ in
206+ ( tag, Just name, dependencies )