on bd2ab82 help sign in
elk/src/Elm/Compiler.hs
70 lines 1.5 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2module Elm.Compiler
3 ( version
4 , Context(..)
5 , Compile.Artifacts(..)
6 , compile
7 , Error.Error
8 , errorsToDoc
9 , Warning.Warning
10 )
11 where
14import qualified Data.ByteString as BS
15import qualified Data.Map as Map
16import qualified Data.Text as Text
18import qualified Compile
19import qualified Elm.Compiler.Module as M
20import qualified Elm.Compiler.Version
21import qualified Elm.Package as Pkg
22import qualified Reporting.Error as Error
23import qualified Reporting.Helpers as H
24import qualified Reporting.Render.Code as Code
25import qualified Reporting.Report as Report
26import qualified Reporting.Result as Result
27import qualified Reporting.Warning as Warning
31-- VERSION
34version :: Pkg.Version
35version =
36 Elm.Compiler.Version.version
40-- COMPILE
43data Context =
44 Context
45 { _package :: Pkg.Name
46 , _exposed :: Bool
47 , _imports :: Map.Map M.Raw M.Canonical
48 , _interfaces :: M.Interfaces
49 }
52compile :: Context -> BS.ByteString -> ([Warning.Warning], Either [Error.Error] Compile.Artifacts)
53compile (Context pkg exposed importDict interfaces) source =
54 let
55 docsFlag =
56 if exposed then Compile.YesDocs else Compile.NoDocs
57 in
58 Result.run $ Compile.compile docsFlag pkg importDict interfaces source
62-- ERRORS
65errorsToDoc :: FilePath -> Text.Text -> [Error.Error] -> H.Doc
66errorsToDoc filePath source errors =
67 H.vcat $
68 map
69 (Report.toDoc filePath)
70 (concatMap (Error.toReports (Code.toSource source) Map.empty) errors)