module Hoogle.Search.All( Result(..), renderResult, searchAll, searchRange ) where import Data.Maybe import Data.Range import Hoogle.DataBase.All import Hoogle.Query.All import Hoogle.Search.Result import Hoogle.Search.Results import Hoogle.TypeSig.All -- return all the results searchAll :: [DataBase] -> Query -> [Result] searchAll databases query = getResults query databases -- should be possible to fast-path certain searches, currently not done searchRange :: Range -> [DataBase] -> Query -> [Result] searchRange r databases query = listRange r $ getResults query databases getResults :: Query -> [DataBase] -> [Result] getResults query = mergeDataBaseResults . map (mergeQueryResults query . f) where f d = [typeSearch d q | Just q <- [typeSig query]] ++ map (nameSearch d) (names query) nameSearch :: DataBase -> String -> [Result] nameSearch db query = [Result e [v] [TextScore s] | (e,v,s) <- searchName db query] typeSearch :: DataBase -> TypeSig -> [Result] typeSearch db query = [Result e v [TypeScore s] | (e,v,s) <- searchType db query]