module Hoogle.DataBase.All (DataBase, showDataBase ,TextScore, TypeScore ,module Hoogle.DataBase.All ,module Hoogle.DataBase.Serialise ) where import Data.Binary.Defer.Index import Hoogle.TextBase.All import Hoogle.TypeSig.All import Hoogle.DataBase.Type import Hoogle.Item.All import Hoogle.DataBase.Serialise import General.Code createDataBase :: [DataBase] -> TextBase -> DataBase createDataBase deps xs = DataBase items (createNameSearch ys) (createTypeSearch as is ys) (createSuggest (map suggest deps) zs) as is where items = createItems xs ys = entriesItems items zs = map fst xs as = createAliases (map aliases deps) zs is = createInstances (map instances deps) zs combineDataBase :: [DataBase] -> DataBase combineDataBase dbs = DataBase items_ (createNameSearch ys) (createTypeSearch as is ys) ss as is where items_ = mergeItems $ map items dbs ys = entriesItems items_ ss = mergeSuggest $ map suggest dbs as = mergeAliases $ map aliases dbs is = mergeInstances $ map instances dbs searchName :: DataBase -> String -> [(Link Entry,EntryView,TextScore)] searchName db = searchNameSearch (nameSearch db) searchType :: DataBase -> TypeSig -> [(Link Entry,[EntryView],TypeScore)] -- although aliases and instances are given, they are usually not used searchType db = searchTypeSearch (aliases db) (instances db) (typeSearch db) suggestion :: [DataBase] -> TypeSig -> Maybe (Either String TypeSig) suggestion db = askSuggest (map suggest db) completions :: DataBase -> String -> [String] completions db = completionsNameSearch (nameSearch db)