1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE FlexibleContexts #-}
5 , parseDependencies, compile
9import Control.Monad.Error (MonadError, throwError)
10import qualified Data.List as List
11import qualified Data.Map as Map
12import qualified Text.PrettyPrint as P
14import qualified AST.Module as Module (HeaderAndImports(HeaderAndImports), toInterface)
15import qualified Compile
16import qualified Elm.Compiler.Module as PublicModule
17import qualified Elm.Compiler.Version as Version
18import Elm.Utils ((|>))
19import qualified Elm.Utils as Utils
20import qualified Generate.JavaScript as JS
21import qualified Parse.Helpers as Help
22import qualified Parse.Module as Parse
23import qualified Paths_elm_compiler as Paths
36 :: (MonadError String m)
38 -> m (PublicModule.Name, [PublicModule.Name])
39parseDependencies src =
40 case Help.iParse Parse.headerAndImports src of
44 Right (Module.HeaderAndImports names _exports imports) ->
46 ( PublicModule.Name names
47 , map (PublicModule.Name . fst) imports
53{-| Compiles Elm source code to JavaScript. -}
58 -> Map.Map PublicModule.Name PublicModule.Interface
59 -> Either String (PublicModule.Interface, String)
60compile user packageName source interfaces =
61 let unwrappedInterfaces =
62 Map.mapKeysMonotonic (\(PublicModule.Name name) -> name) interfaces
64 case Compile.compile user packageName unwrappedInterfaces source of
66 Right (Module.toInterface modul, JS.generate modul)
70 |> List.intersperse ""
77{-| Path to the debugger runtime.
79runtimeDebugPath :: IO FilePath
81 Utils.getAsset "compiler" Paths.getDataFileName "runtime/debug.js"
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