@@ -1,8 +1,6 @@
1{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE OverloadedStrings #-}
2module Elm.Compiler
2module Elm.Compiler
4− , Compile.DocsFlag(..)
5− , Compile.Artifacts(..)
3+ ( Compile.Artifacts(..)
7 , Error.Error
5 , Error.Error
8 , errorsToDoc
6 , errorsToDoc
@@ -14,52 +12,43 @@ module Elm.Compiler
15import qualified Data.ByteString as BS
13import qualified Data.ByteString as BS
16import qualified Data.Map as Map
14import qualified Data.Map as Map
17−import qualified Data.Text as Text
15+import qualified Data.Name as Name
16+import qualified Data.Utf8 as Utf8
19import qualified Compile
18import qualified Compile
20−import qualified Elm.Compiler.Version
21import qualified Elm.Interface as I
19import qualified Elm.Interface as I
22import qualified Elm.ModuleName as ModuleName
20import qualified Elm.ModuleName as ModuleName
23import qualified Elm.Package as Pkg
21import qualified Elm.Package as Pkg
24−import qualified Json.Encode as Encode
22+import qualified Json.Encode as E
23+import Json.Encode ((==>))
24+import qualified Reporting.Annotation as A
25import qualified Reporting.Doc as D
25import qualified Reporting.Doc as D
26import qualified Reporting.Error as Error
26import qualified Reporting.Error as Error
27import qualified Reporting.Render.Code as Code
27import qualified Reporting.Render.Code as Code
28−import qualified Reporting.Region as Region
29import qualified Reporting.Report as Report
28import qualified Reporting.Report as Report
30import qualified Reporting.Result as Result
29import qualified Reporting.Result as Result
31import qualified Reporting.Warning as Warning
30import qualified Reporting.Warning as Warning
38−version :: Pkg.Version
40− Elm.Compiler.Version.version
49− -> Pkg.Name
38+ :: Pkg.Name
50 -> Map.Map ModuleName.Raw ModuleName.Canonical
39 -> Map.Map ModuleName.Raw ModuleName.Canonical
51 -> I.Interfaces
40 -> I.Interfaces
52 -> BS.ByteString
41 -> BS.ByteString
53 -> ( [Warning.Warning], Either [Error.Error] Compile.Artifacts )
42 -> ( [Warning.Warning], Either [Error.Error] Compile.Artifacts )
54−compile docsFlag pkg importDict interfaces source =
43+compile pkg importDict interfaces source =
55− Result.run $ Compile.compile docsFlag pkg importDict interfaces source
44+ Result.run $ Compile.compile pkg importDict interfaces source
59-- ERRORS TO DOC
48-- ERRORS TO DOC
62−errorsToDoc :: FilePath -> Text.Text -> [Error.Error] -> D.Doc
51+errorsToDoc :: FilePath -> String -> [Error.Error] -> D.Doc
63errorsToDoc filePath source errors =
52errorsToDoc filePath source errors =
@@ -72,23 +61,39 @@ errorsToDoc filePath source errors =
72-- ERRORS TO JSON
61-- ERRORS TO JSON
75−errorsToJson :: ModuleName.Raw -> FilePath -> Text.Text -> [Error.Error] -> Encode.Value
64+errorsToJson :: ModuleName.Raw -> FilePath -> String -> [Error.Error] -> E.Value
76errorsToJson moduleName filePath source errors =
65errorsToJson moduleName filePath source errors =
79 concatMap (Error.toReports (Code.toSource source)) errors
68 concatMap (Error.toReports (Code.toSource source)) errors
81− Encode.object
70+ E.object
82− [ ("path", Encode.text (Text.pack filePath))
71+ [ "path" ==> E.string (Utf8.fromChars filePath)
83− , ("name", Encode.name moduleName)
72+ , "name" ==> E.string (Name.toUtf8 moduleName)
84− , ("problems", Encode.array (map reportToJson reports))
73+ , "problems" ==> E.array (map reportToJson reports)
88−reportToJson :: Report.Report -> Encode.Value
77+reportToJson :: Report.Report -> E.Value
89reportToJson (Report.Report title region _sgstns message) =
78reportToJson (Report.Report title region _sgstns message) =
90− Encode.object
79+ E.object
91− [ ("title", Encode.text (Text.pack title))
80+ [ "title" ==> E.string (Utf8.fromChars title)
92− , ("region", Region.encode region)
81+ , "region" ==> encodeRegion region
93− , ("message", D.encode message)
82+ , "message" ==> D.encode message
86+encodeRegion :: A.Region -> E.Value
87+encodeRegion (A.Region (A.Position sr sc) (A.Position er ec)) =
91+ [ ("line", E.int (fromIntegral sr))
92+ , ("column", E.int (fromIntegral sc))
96+ [ ("line", E.int (fromIntegral er))
97+ , ("column", E.int (fromIntegral ec))