mirror of
https://github.com/github/semantic.git
synced 2024-11-29 11:02:26 +03:00
Make symbols output also return partial results
This commit is contained in:
parent
4fbeaef355
commit
2e1626d949
@ -8,6 +8,7 @@ module Rendering.JSON
|
|||||||
, renderJSONAST
|
, renderJSONAST
|
||||||
, renderSymbolTerms
|
, renderSymbolTerms
|
||||||
, renderJSONError
|
, renderJSONError
|
||||||
|
, renderJSONSymbolError
|
||||||
, renderJSONDiffError
|
, renderJSONDiffError
|
||||||
, SomeJSON(..)
|
, SomeJSON(..)
|
||||||
) where
|
) where
|
||||||
@ -94,12 +95,22 @@ instance ToJSON a => ToJSON (JSONAST a) where
|
|||||||
renderSymbolTerms :: ToJSON a => [a] -> JSON "files" SomeJSON
|
renderSymbolTerms :: ToJSON a => [a] -> JSON "files" SomeJSON
|
||||||
renderSymbolTerms = JSON . map SomeJSON
|
renderSymbolTerms = JSON . map SomeJSON
|
||||||
|
|
||||||
|
-- | Render an error for symbols.
|
||||||
|
renderJSONSymbolError :: Blob -> String -> JSON "files" SomeJSON
|
||||||
|
renderJSONSymbolError blob e = JSON [ renderError blob e ]
|
||||||
|
|
||||||
|
-- | Render an error for terms.
|
||||||
renderJSONError :: Blob -> String -> JSON "trees" SomeJSON
|
renderJSONError :: Blob -> String -> JSON "trees" SomeJSON
|
||||||
renderJSONError Blob{..} e = JSON [ SomeJSON (object [ "error" .= err ]) ]
|
renderJSONError blob e = JSON [ renderError blob e ]
|
||||||
where err = object [ "message" .= e
|
|
||||||
|
-- | Render an error for a particular blob.
|
||||||
|
renderError :: ToJSON a => Blob -> a -> SomeJSON
|
||||||
|
renderError Blob{..} e = SomeJSON $ object
|
||||||
|
[ "error" .= e
|
||||||
, "path" .= blobPath
|
, "path" .= blobPath
|
||||||
, "language" .= blobLanguage ]
|
, "language" .= blobLanguage ]
|
||||||
|
|
||||||
|
-- | Render an error for diffs.
|
||||||
renderJSONDiffError :: BlobPair -> String -> JSON "diffs" SomeJSON
|
renderJSONDiffError :: BlobPair -> String -> JSON "diffs" SomeJSON
|
||||||
renderJSONDiffError pair e = JSON [ SomeJSON (object [ "error" .= err ]) ]
|
renderJSONDiffError pair e = JSON [ SomeJSON (object [ "error" .= err ]) ]
|
||||||
where err = object ["message" .= e, "stat" .= toJSON (JSONStat pair)]
|
where err = object ["message" .= e, "stat" .= toJSON (JSONStat pair)]
|
||||||
|
@ -14,6 +14,7 @@ module Rendering.Renderer
|
|||||||
, renderToSymbols
|
, renderToSymbols
|
||||||
, renderTreeGraph
|
, renderTreeGraph
|
||||||
, renderJSONError
|
, renderJSONError
|
||||||
|
, renderJSONSymbolError
|
||||||
, renderJSONDiffError
|
, renderJSONDiffError
|
||||||
, renderJSONSummaryError
|
, renderJSONSummaryError
|
||||||
, Summaries(..)
|
, Summaries(..)
|
||||||
|
@ -33,7 +33,7 @@ runParse JSONGraphTermRenderer = withParsedBlobs' renderJSONError (render
|
|||||||
renderAdjGraph blob term = renderJSONAdjTerm blob (renderTreeGraph term)
|
renderAdjGraph blob term = renderJSONAdjTerm blob (renderTreeGraph term)
|
||||||
runParse SExpressionTermRenderer = withParsedBlobs (const (serialize (SExpression ByConstructorName)))
|
runParse SExpressionTermRenderer = withParsedBlobs (const (serialize (SExpression ByConstructorName)))
|
||||||
runParse ShowTermRenderer = withParsedBlobs (const (serialize Show . quieterm))
|
runParse ShowTermRenderer = withParsedBlobs (const (serialize Show . quieterm))
|
||||||
runParse (SymbolsTermRenderer fields) = withParsedBlobs (\ blob -> render (renderSymbolTerms . renderToSymbols fields blob)) >=> serialize JSON
|
runParse (SymbolsTermRenderer fields) = withParsedBlobs' renderJSONSymbolError (\ blob -> render (renderSymbolTerms . renderToSymbols fields blob)) >=> serialize JSON
|
||||||
runParse DOTTermRenderer = withParsedBlobs (const (render renderTreeGraph)) >=> serialize (DOT (termStyle "terms"))
|
runParse DOTTermRenderer = withParsedBlobs (const (render renderTreeGraph)) >=> serialize (DOT (termStyle "terms"))
|
||||||
runParse QuietTermRenderer = distributeFoldMap $ \blob ->
|
runParse QuietTermRenderer = distributeFoldMap $ \blob ->
|
||||||
showTiming blob <$> time' ((parseSomeBlob blob >>= withSomeTerm (fmap (const (Right ())) . serialize Show . quieterm)) `catchError` \(SomeException e) -> pure (Left (show e)))
|
showTiming blob <$> time' ((parseSomeBlob blob >>= withSomeTerm (fmap (const (Right ())) . serialize Show . quieterm)) `catchError` \(SomeException e) -> pure (Left (show e)))
|
||||||
|
@ -13,7 +13,7 @@ spec = parallel $ do
|
|||||||
describe "parseBlob" $ do
|
describe "parseBlob" $ do
|
||||||
it "returns error if given an unknown language (json)" $ do
|
it "returns error if given an unknown language (json)" $ do
|
||||||
output <- fmap runBuilder . runTask $ runParse JSONTermRenderer [ methodsBlob { blobLanguage = Unknown } ]
|
output <- fmap runBuilder . runTask $ runParse JSONTermRenderer [ methodsBlob { blobLanguage = Unknown } ]
|
||||||
output `shouldBe` "{\"trees\":[{\"error\":{\"path\":\"methods.rb\",\"language\":\"Unknown\",\"message\":\"NoLanguageForBlob \\\"methods.rb\\\"\"}}]}\n"
|
output `shouldBe` "{\"trees\":[{\"path\":\"methods.rb\",\"error\":\"NoLanguageForBlob \\\"methods.rb\\\"\",\"language\":\"Unknown\"}]}\n"
|
||||||
|
|
||||||
it "throws if given an unknown language for sexpression output" $ do
|
it "throws if given an unknown language for sexpression output" $ do
|
||||||
runTask (runParse SExpressionTermRenderer [methodsBlob { blobLanguage = Unknown }]) `shouldThrow` (== ExitFailure 1)
|
runTask (runParse SExpressionTermRenderer [methodsBlob { blobLanguage = Unknown }]) `shouldThrow` (== ExitFailure 1)
|
||||||
|
Loading…
Reference in New Issue
Block a user