1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE FlexibleContexts #-}
5 , parseDependencies, compile
6 , Error, errorToString, errorToJson
7 , Warning, warningToString, warningToJson
10import Control.Monad.Error.Class (MonadError, throwError)
11import qualified Data.Map as Map
13import qualified AST.Module as Module
14import qualified Compile
15import qualified Elm.Compiler.Module as PublicModule
16import qualified Elm.Compiler.Version as Version
17import qualified Generate.JavaScript as JS
18import qualified Parse.Helpers as Help
19import qualified Parse.Module as Parse
20import qualified Reporting.Annotation as A
21import qualified Reporting.Error as Error
22import qualified Reporting.Result as Result
23import qualified Reporting.Warning as Warning
41 :: (MonadError String m)
43 -> m (PublicModule.Name, [PublicModule.Name])
44parseDependencies src =
45 case Help.iParse Parse.header src of
49 Right (Module.Header names _exports imports) ->
51 ( PublicModule.Name names
52 , map (PublicModule.Name . fst . A.drop) imports
58{-| Compiles Elm source code to JavaScript. -}
63 -> Map.Map PublicModule.Name PublicModule.Interface
64 -> ([Warning], Either [Error] (PublicModule.Interface, String))
65compile user packageName source interfaces =
66 let unwrappedInterfaces =
67 Map.mapKeysMonotonic (\(PublicModule.Name name) -> name) interfaces
69 (Result.Result warnings rawResult) =
70 Compile.compile user packageName unwrappedInterfaces source
72 (,) (map Warning warnings) $
75 Right (Module.toInterface modul, JS.generate modul)
78 Left (map Error errors)
83newtype Error = Error (A.Located Error.Error)
86errorToString :: Error -> String
87errorToString (Error err) =
91errorToJson :: Error -> String
92errorToJson (Error err) =
98newtype Warning = Warning (A.Located Warning.Warning)
101warningToString :: Warning -> String
102warningToString (Warning warning) =
103 Warning.toString warning
106warningToJson :: Warning -> String
107warningToJson (Warning warning) =
108 Warning.toJson warning
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