hoogle-4.1.5: Haskell API Search

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 Source

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 -> StringSource

Show a TagStr as a string, without any formatting.

showTagANSI :: TagStr -> StringSource

Show a TagStr on a console with ANSI escape sequences.

showTagHTML :: TagStr -> StringSource

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

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

Show TagStr with an override for specific tags.

data ParseError Source

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 = StringSource

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

data Language Source

The languages supported by Hoogle.

Constructors

Haskell

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

Database

data Database Source

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 DatabaseSource

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 ()Source

Save a database to a file.

createDatabaseSource

Arguments

:: 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.

-> ([ParseError], Database)

A pair containing any parse errors present in the input definition, and the database ignoring any parse errors.

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] -> StringSource

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 Source

A query, representing a user input.

Constructors

Query 

Fields

names :: [String]
 
typeSig :: Maybe TypeSig
 
scope :: [Scope]
 

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

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

renderQuery :: Query -> TagStrSource

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

isBlankQuery :: Query -> BoolSource

Test if a query will result in a search being performed. A query which lists only scopes (e.g. +base) will still be reported is blank.

queryDatabases :: Query -> [String]Source

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.

querySuggestions :: Database -> Query -> Maybe TagStrSource

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

queryCompletions :: Database -> String -> [String]Source

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

Score

data Score Source

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

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

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 Source

Constructors

Result 

Fields

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

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

Perform a search. The results are returned lazily.