packages feed

hoogle-4.0: src/Hoogle/DataBase/All.hs

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


createDataBase :: TextBase -> DataBase
createDataBase xs = DataBase items
        (createNameSearch ys) (createTypeSearch aliases instances ys)
        (createSuggest ys) aliases instances
    where
        (items,ys) = createItems xs
        zs = map fst ys
        aliases = createAliases zs
        instances = createInstances zs


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)