@@ -1,4 +1,4 @@
1−{-# OPTIONS_GHC -Wall #-}
1+{-# LANGUAGE OverloadedStrings #-}
2module Elm.Compiler
2module Elm.Compiler
4 , Context(..)
4 , Context(..)
@@ -6,6 +6,7 @@ module Elm.Compiler
7 , Error.Error
7 , Error.Error
8 , errorsToDoc
8 , errorsToDoc
9 , Warning.Warning
10 , Warning.Warning
@@ -14,14 +15,17 @@ module Elm.Compiler
14import qualified Data.ByteString as BS
15import qualified Data.ByteString as BS
15import qualified Data.Map as Map
16import qualified Data.Map as Map
16import qualified Data.Text as Text
17import qualified Data.Text as Text
18+import qualified Text.PrettyPrint.ANSI.Leijen as P
18import qualified Compile
20import qualified Compile
19import qualified Elm.Compiler.Module as M
21import qualified Elm.Compiler.Module as M
20import qualified Elm.Compiler.Version
22import qualified Elm.Compiler.Version
21import qualified Elm.Package as Pkg
23import qualified Elm.Package as Pkg
24+import qualified Json.Encode as Encode
22import qualified Reporting.Error as Error
25import qualified Reporting.Error as Error
23import qualified Reporting.Helpers as H
26import qualified Reporting.Helpers as H
24import qualified Reporting.Render.Code as Code
27import qualified Reporting.Render.Code as Code
28+import qualified Reporting.Region as Region
25import qualified Reporting.Report as Report
29import qualified Reporting.Report as Report
26import qualified Reporting.Result as Result
30import qualified Reporting.Result as Result
27import qualified Reporting.Warning as Warning
31import qualified Reporting.Warning as Warning
@@ -59,12 +63,42 @@ compile (Context pkg exposed importDict interfaces) source =
62−-- ERRORS
66+-- ERRORS TO DOC
65errorsToDoc :: FilePath -> Text.Text -> [Error.Error] -> H.Doc
69errorsToDoc :: FilePath -> Text.Text -> [Error.Error] -> H.Doc
66errorsToDoc filePath source errors =
70errorsToDoc filePath source errors =
73+ concatMap (Error.toReports (Code.toSource source) Map.empty) errors
69− (Report.toDoc filePath)
75+ H.vcat $ map (Report.toDoc filePath) reports
82+errorsToJson :: FilePath -> Text.Text -> [Error.Error] -> Encode.Value
83+errorsToJson filePath source errors =
70− (concatMap (Error.toReports (Code.toSource source) Map.empty) errors)
86+ concatMap (Error.toReports (Code.toSource source) Map.empty) errors
89+ [ ("path", Encode.text (Text.pack filePath))
90+ , ("errors", Encode.array (map reportToJson reports))
94+reportToJson :: Report.Report -> Encode.Value
95+reportToJson (Report.Report title region _sgstns message) =
98+ P.displayS (P.renderPretty 1 80 message) ""
101+ [ ("title", Encode.text (Text.pack title))
102+ , ("region", Region.encode region)
103+ , ("message", Encode.text (Text.pack messageString))