1{-# OPTIONS_GHC -Wall #-}
4 , compile, Context(..), Result(..)
5 , generate, JS.Target(..)
6 , Localizer, dummyLocalizer
7 , I.Error, errorToDoc, errorToJson
8 , I.Warning, warningToDoc, warningToJson
12import qualified Data.Aeson as Json
13import qualified Data.Map as Map
14import Data.Text (Text)
15import qualified Data.ByteString.Builder as BS
16import Text.PrettyPrint.ANSI.Leijen (Doc)
18import qualified AST.Module as Module
19import qualified AST.Module.Name as ModuleName
20import qualified Compile
21import qualified Docs.Check as Docs
22import qualified Elm.Compiler.Internals as I
23import qualified Elm.Compiler.Module as M
24import qualified Elm.Compiler.Objects.Internal as Obj
25import qualified Elm.Compiler.Version
26import qualified Elm.Docs as Docs
27import qualified Elm.Package as Package
28import qualified Generate.JavaScript as JS
29import qualified Reporting.Annotation as A
30import qualified Reporting.Bag as Bag
31import qualified Reporting.Error as Error
32import qualified Reporting.Render.Type as RenderType
33import qualified Reporting.Report as Report
34import qualified Reporting.Result as Result
35import qualified Reporting.Warning as Warning
42version :: Package.Version
44 Elm.Compiler.Version.version
51{-| Compiles Elm source code to JavaScript. -}
52compile :: Context -> Text -> (Localizer, [I.Warning], Either [I.Error] Result)
53compile (Context packageName exposed importDict interfaces) source =
55 (Result.Result oneLocalizer warnings answer) =
56 do modul <- Compile.compile packageName importDict interfaces source
57 docs <- Result.format id (docsGen exposed modul)
59 let iface = Module.toInterface modul
60 let objs = Obj.fromModule modul
62 return (Result docs iface objs)
64 ( Result.oneToValue dummyLocalizer Localizer oneLocalizer
65 , Bag.toList I.Warning warnings
66 , Result.answerToEither I.Error id answer
72 { _package :: Package.Name
74 , _imports :: Map.Map M.Raw M.Canonical
75 , _interfaces :: M.Interfaces
81 { _docs :: Maybe Docs.Module
82 , _iface :: M.Interface
91docsGen :: Bool -> Module.Optimized -> Result.Result () w Error.Error (Maybe Docs.Module)
92docsGen isExposed (Module.Module name info) =
99 Just (Docs.Module (ModuleName._module name) checked)
101 toDocs <$> Docs.check (Module.exports info) (Module.docs info)
108generate :: Bool -> JS.Target -> Obj.Graph -> Obj.Roots -> BS.Builder
118 Localizer RenderType.Localizer
121dummyLocalizer :: Localizer
130errorToDoc :: Localizer -> String -> Text -> I.Error -> Doc
131errorToDoc (Localizer localizer) location source (I.Error (A.A region err)) =
132 Report.toDoc location region (Error.toReport localizer err) source
135errorToJson :: Localizer -> String -> I.Error -> Json.Value
136errorToJson (Localizer localizer) location (I.Error err) =
137 Error.toJson localizer location err
144warningToDoc :: Localizer -> String -> Text -> I.Warning -> Doc
145warningToDoc (Localizer localizer) location source (I.Warning (A.A region wrn)) =
146 Report.toDoc location region (Warning.toReport localizer wrn) source
149warningToJson :: Localizer -> String -> I.Warning -> Json.Value
150warningToJson (Localizer localizer) location (I.Warning wrn) =
151 Warning.toJson localizer location wrn
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