1{-# OPTIONS_GHC -Wall #-}
5 , compile, Context(..), Result(..)
6 , Dealiaser, dummyDealiaser
7 , Error, errorToString, errorToJson, printError
8 , Warning, warningToString, warningToJson, printWarning
12import qualified Data.Aeson as Json
13import qualified Data.Map as Map
15import qualified AST.Module as Module
16import qualified AST.Module.Name as ModuleName
17import qualified Compile
18import qualified Docs.Check as Docs
19import qualified Elm.Compiler.Version
20import qualified Elm.Compiler.Module as PublicModule
21import qualified Elm.Docs as Docs
22import qualified Elm.Package as Package
23import qualified Generate.JavaScript as JS
24import qualified Parse.Module as Parse
25import qualified Parse.Parse as Parse
26import qualified Reporting.Annotation as A
27import qualified Reporting.Error as Error
28import qualified Reporting.Render.Type as RenderType
29import qualified Reporting.Result as Result
30import qualified Reporting.Warning as Warning
35version :: Package.Version
37 Elm.Compiler.Version.version
44 -> Either [Error] (PublicModule.Name, [PublicModule.Name])
45parseDependencies sourceCode =
47 (Result.Result _warnings rawResult) =
48 Parse.parse sourceCode Parse.header
52 Left $ map (Error . A.map Error.Syntax) msgs
54 Result.Ok (Module.Header name _docs _exports imports) ->
56 ( PublicModule.Name name
57 , map (PublicModule.Name . fst . A.drop) imports
63{-| Compiles Elm source code to JavaScript. -}
67 -> PublicModule.Interfaces
68 -> (Dealiaser, [Warning], Either [Error] Result)
70compile context source interfaces =
72 (Context packageName isRoot isExposed dependencies) =
75 (Result.Result (localizer, warnings) rawResult) =
76 do modul <- Compile.compile packageName isRoot dependencies interfaces source
77 docs <- docsGen isExposed modul
79 let interface = Module.toInterface packageName modul
80 let javascript = JS.generate modul
82 return (Result docs interface javascript)
84 ( maybe dummyDealiaser Dealiaser localizer
85 , map Warning warnings
86 , Result.destruct (Left . map Error) Right rawResult
91 { _packageName :: Package.Name
94 , _dependencies :: [PublicModule.CanonicalName]
99 { _docs :: Maybe Docs.Documentation
100 , _interface :: PublicModule.Interface
108 -> Result.Result w Error.Error (Maybe Docs.Documentation)
109docsGen isExposed modul =
110 if not isExposed then
115 Docs.check (Module.exports modul) (Module.docs modul)
118 PublicModule.Name (ModuleName._module (Module.name modul))
121 Docs.fromCheckedDocs name checked
123 (Just . toDocs) `fmap` Result.mapError Error.Docs getChecked
129 Dealiaser RenderType.Localizer
132dummyDealiaser :: Dealiaser
140 Error (A.Located Error.Error)
143errorToString :: Dealiaser -> String -> String -> Error -> String
144errorToString (Dealiaser localizer) location source (Error err) =
145 Error.toString localizer location source err
148printError :: Dealiaser -> String -> String -> Error -> IO ()
149printError (Dealiaser localizer) location source (Error err) =
150 Error.print localizer location source err
153errorToJson :: Dealiaser -> String -> Error -> Json.Value
154errorToJson (Dealiaser localizer) location (Error err) =
155 Error.toJson localizer location err
161 Warning (A.Located Warning.Warning)
164warningToString :: Dealiaser -> String -> String -> Warning -> String
165warningToString (Dealiaser localizer) location source (Warning err) =
166 Warning.toString localizer location source err
169printWarning :: Dealiaser -> String -> String -> Warning -> IO ()
170printWarning (Dealiaser localizer) location source (Warning err) =
171 Warning.print localizer location source err
174warningToJson :: Dealiaser -> String -> Warning -> Json.Value
175warningToJson (Dealiaser localizer) location (Warning err) =
176 Warning.toJson localizer location err
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list