hoogle-4.2.34: Haskell API Search

Safe HaskellNone
LanguageHaskell98

Hoogle

Contents

Description

The Hoogle API. To perform a search you call search with a Database (obtained by loadDatabase) and a Query (obtained by parseQuery).

Synopsis

Utility types

data TagStr

Constructors

Str String

Plain text.

Tags [TagStr]

A list of tags one after another.

TagBold TagStr

Bold text.

TagEmph TagStr

Underlined/italic text.

TagLink String TagStr

A hyperlink to a URL.

TagColor Int TagStr

Colored text. Index into a 0-based palette. Text without any TagColor should be black.

showTagText :: TagStr -> String

Show a TagStr as a string, without any formatting.

showTagANSI :: TagStr -> String

Show a TagStr on a console with ANSI escape sequences.

showTagHTML :: TagStr -> String

Show a TagStr as HTML, using CSS classes for color styling.

showTagHTMLWith :: (TagStr -> Maybe String) -> TagStr -> String

Show TagStr with an override for specific tags.

data ParseError

Data type representing a parse error. All indecies are 1-based.

Constructors

ParseError 

Fields

lineNo :: Int

Line number on which the error occured, 1 for the first line of a file.

columnNo :: Int

Column number on which the error occured, 1 for the first character of a line.

errorMessage :: String

Error message caused by the parse error.

parseInput :: TagStr

Input string which caused the error - sometimes with a TagEmph to indicate which part was incorrect.

type URL = String

A URL, or internet address. These addresses will usually start with either http:// or file://.

data Language

The languages supported by Hoogle.

Constructors

Haskell

The Haskell language (http://haskell.org/), along with many GHC specific extensions.

Database

data Database

A Hoogle database, containing a set of functions/items which can be searched. The Database type is used for a variety of purposes:

Creation
A database is created by merging existing databases with the Monoid instance and mappend, or by creating a new Database from an input file with createDatabase.
Serialization
A database is saved to disk with saveDatabase and loaded from disk with loadDatabase.
Searching
A database is searched using search.

loadDatabase :: FilePath -> IO Database

Load a database from a file. If the database was not saved with the same version of Hoogle, it will probably throw an error.

saveDatabase :: FilePath -> Database -> IO ()

Save a database to a file.

createDatabase

Arguments

:: HackageURL 
-> Language

Which format the input definition is in.

-> [Database]

A list of databases which contain definitions this input definition relies upon (e.g. types, aliases, instances).

-> String

The input definitions, usually with one definition per line, in a format specified by the Language.

-> FilePath

Output file

-> IO [ParseError]

A list of any parse errors present in the input definition that were skipped.

Create a database from an input definition. Source files for Hoogle databases are usually stored in UTF8 format, and should be read using hSetEncoding and utf8.

showDatabase :: Database -> Maybe [String] -> String

Show debugging information on some parts of the database. If the second argument is Nothing the whole database will be shown. Otherwise, the listed parts will be shown.

Query

data Query

A query, representing a user input.

parseQuery :: Language -> String -> Either ParseError Query

Parse a query for a given language, returning either a parse error, or a query.

renderQuery :: Query -> TagStr

Render a query, in particular using TagColor for any type signature argument positions.

queryDatabases :: Query -> [String]

Given a query, return the list of packages that should be searched. Each package will be the name of a database, without any file path or extension included.

queryPackages :: Query -> [(Bool, String)]

Return those packages which are explicitly excluded (paired with False) or included (paired with True) in the query.

querySetPackage :: Maybe Bool -> String -> Query -> Query

Set the state of a package within a query. Nothing means delete the package, Just True for add it, and Just False for remove it.

Score

data Score

A score, representing how close a match is. Lower scores are better.

scoring :: [(Score, Score)] -> IO String

Given a set of scores, where the first is lower than the second, returns details for how to rank scores. This function is in the IO monad since it may require randomness, and it may output status messages while solving, particularly if in Verbose mode.

Search

data Result

Constructors

Result 

Fields

locations :: [(URL, [(URL, String)])]
 
self :: TagStr

Rendered view for the entry, including namekeywordstype as appropriate, colors matching renderQuery

docs :: TagStr

Documentation for the entry

Instances

search :: Database -> Query -> [(Score, Result)]

Perform a search. The results are returned lazily.

suggestions :: Database -> Query -> Maybe TagStr

Given a query and a database optionally give a list of what the user might have meant.

completions :: Database -> String -> [String]

Given a query string and a database return a list of the possible completions for the search.

queryExact :: Maybe ItemKind -> Query -> Query

Given a query, set whether it is an exact query.