unused-0.9.0.0: src/Unused/Parser.hs
module Unused.Parser
( parseResults
) where
import Control.Arrow ((&&&))
import qualified Data.Bifunctor as BF
import qualified Data.List as L
import qualified Data.Map.Strict as Map
import Unused.Aliases (groupedTermsAndAliases)
import Unused.LikelihoodCalculator (calculateLikelihood)
import Unused.ResultsClassifier.Types (LanguageConfiguration(..))
import Unused.TermSearch (SearchResults, fromResults)
import Unused.Types
(TermMatch, TermMatchSet, resultsFromMatches, tmDisplayTerm)
parseResults :: [LanguageConfiguration] -> SearchResults -> TermMatchSet
parseResults lcs =
Map.fromList .
map (BF.second $ calculateLikelihood lcs . resultsFromMatches) . groupResults . fromResults
groupResults :: [TermMatch] -> [(String, [TermMatch])]
groupResults ms = map (toKey &&& id) groupedMatches
where
toKey = L.intercalate "|" . L.nub . L.sort . map tmDisplayTerm
groupedMatches = groupedTermsAndAliases ms