on master help sign in
No longer need an Elm.Compiler module as interface into other code
0d2ec56Evan Czaplicki
compiler/src/Elm/Compiler.hsdeleted−99
@@ -1,99 +0,0 @@
1−{-# LANGUAGE OverloadedStrings #-}
2−module Elm.Compiler
3− ( Compile.Artifacts(..)
4− , compile
5− , Error.Error
6− , errorsToDoc
7− , errorsToJson
8− , Warning.Warning
9− )
10− where
11−
12−
13−import qualified Data.ByteString as BS
14−import qualified Data.Map as Map
15−import qualified Data.Name as Name
16−import qualified Data.Utf8 as Utf8
17−
18−import qualified Compile
19−import qualified Elm.Interface as I
20−import qualified Elm.ModuleName as ModuleName
21−import qualified Elm.Package as Pkg
22−import qualified Json.Encode as E
23−import Json.Encode ((==>))
24−import qualified Reporting.Annotation as A
25−import qualified Reporting.Doc as D
26−import qualified Reporting.Error as Error
27−import qualified Reporting.Render.Code as Code
28−import qualified Reporting.Report as Report
29−import qualified Reporting.Result as Result
30−import qualified Reporting.Warning as Warning
31−
32−
33−
34−-- COMPILE
35−
36−
37−compile
38− :: Pkg.Name
39− -> Map.Map ModuleName.Raw ModuleName.Canonical
40− -> I.Interfaces
41− -> BS.ByteString
42− -> ( [Warning.Warning], Either [Error.Error] Compile.Artifacts )
43−compile pkg importDict interfaces source =
44− Result.run $ Compile.compile pkg importDict interfaces source
45−
46−
47−
48−-- ERRORS TO DOC
49−
50−
51−errorsToDoc :: FilePath -> String -> [Error.Error] -> D.Doc
52−errorsToDoc filePath source errors =
53− let
54− reports =
55− concatMap (Error.toReports (Code.toSource source)) errors
56− in
57− D.vcat $ map (Report.toDoc filePath) reports
58−
59−
60−
61−-- ERRORS TO JSON
62−
63−
64−errorsToJson :: ModuleName.Raw -> FilePath -> String -> [Error.Error] -> E.Value
65−errorsToJson moduleName filePath source errors =
66− let
67− reports =
68− concatMap (Error.toReports (Code.toSource source)) errors
69− in
70− E.object
71− [ "path" ==> E.string (Utf8.fromChars filePath)
72− , "name" ==> E.string (Name.toUtf8 moduleName)
73− , "problems" ==> E.array (map reportToJson reports)
74− ]
75−
76−
77−reportToJson :: Report.Report -> E.Value
78−reportToJson (Report.Report title region _sgstns message) =
79− E.object
80− [ "title" ==> E.string (Utf8.fromChars title)
81− , "region" ==> encodeRegion region
82− , "message" ==> D.encode message
83− ]
84−
85−
86−encodeRegion :: A.Region -> E.Value
87−encodeRegion (A.Region (A.Position sr sc) (A.Position er ec)) =
88− E.object
89− [ "start" ==>
90− E.object
91− [ ("line", E.int (fromIntegral sr))
92− , ("column", E.int (fromIntegral sc))
93− ]
94− , "end" ==>
95− E.object
96− [ ("line", E.int (fromIntegral er))
97− , ("column", E.int (fromIntegral ec))
98− ]
99− ]