-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Haskell API Search
--   
--   Hoogle is a Haskell API search engine, which allows you to search many
--   standard Haskell libraries by either function name, or by approximate
--   type signature.
@package hoogle
@version 5.0.14

-- | High level Hoogle API
module Hoogle

-- | Database containing Hoogle search data.
data Database

-- | Load a database from a file.
withDatabase :: NFData a => FilePath -> (Database -> IO a) -> IO a

-- | Search a database, given a query string, produces a list of results.
searchDatabase :: Database -> String -> [Target]

-- | The default location of a database
defaultDatabaseLocation :: IO FilePath

-- | A location of documentation.
data Target
Target :: URL -> Maybe (String, URL) -> Maybe (String, URL) -> String -> String -> String -> Target

-- | URL where this thing is located
[targetURL] :: Target -> URL

-- | Name and URL of the package it is in (Nothing if it is a package)
[targetPackage] :: Target -> Maybe (String, URL)

-- | Name and URL of the module it is in (Nothing if it is a package or
--   module)
[targetModule] :: Target -> Maybe (String, URL)

-- | One of package, module or empty string
[targetType] :: Target -> String

-- | HTML span of the item, using 0 for the name and 1
--   onwards for arguments
[targetItem] :: Target -> String

-- | HTML documentation to show, a sequence of block level elements
[targetDocs] :: Target -> String

-- | A URL, complete with a https: prefix.
type URL = String

-- | Run a command line Hoogle operation.
hoogle :: [String] -> IO ()

-- | Returns the details printed out when hoogle --info is called
targetInfo :: Target -> String

-- | Returns the Target formatted as an item to display in the results |
--   Bool argument decides whether links are shown
targetResultDisplay :: Bool -> Target -> String
