hoogle-4.2.8: Haskell API Search

Hoogle

Contents

- Utility types
- Database
- Query
- Score
- Search

Description

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

Synopsis

- data TagStr
  - = Str String
  - | Tags [TagStr]
  - | TagBold TagStr
  - | TagEmph TagStr
  - | TagLink String TagStr
  - | TagColor Int TagStr
- showTagText :: TagStr -> String
- showTagANSI :: TagStr -> String
- showTagHTML :: TagStr -> String
- showTagHTMLWith :: (TagStr -> Maybe String) -> TagStr -> String
- data ParseError = ParseError {
  - lineNo :: Int
  - columnNo :: Int
  - errorMessage :: String
  - parseInput :: TagStr
  }
- type URL = String
- data Language = Haskell
- data Database
- loadDatabase :: FilePath -> IO Database
- saveDatabase :: FilePath -> Database -> IO ()
- createDatabase :: Language -> [Database] -> String -> ([ParseError], Database)
- showDatabase :: Database -> Maybe [String] -> String
- data Query
- parseQuery :: Language -> String -> Either ParseError Query
- renderQuery :: Query -> TagStr
- queryDatabases :: Query -> [String]
- queryPackages :: Query -> [(Bool, String)]
- querySetPackage :: Maybe Bool -> String -> Query -> Query
- data Score
- scoring :: [(Score, Score)] -> IO String
- data Result = Result {
  - locations :: [(URL, [(URL, String)])]
  - self :: TagStr
  - docs :: TagStr
  }
- search :: Database -> Query -> [(Score, Result)]
- suggestions :: Database -> Query -> Maybe TagStr
- completions :: Database -> String -> [String]

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

Instances

Eq TagStr |
Data TagStr |
Ord TagStr |
Show TagStr |
Typeable TagStr |
Monoid TagStr |
Uniplate TagStr |
Store TagStr |

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.

Instances

Eq ParseError |
Data ParseError |
Ord ParseError |
Show ParseError |
Typeable ParseError |

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.

Instances

Bounded Language |
Enum Language |
Eq Language |
Data Language |
Ord Language |
Read Language |
Show Language |
Typeable Language |

# 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`.

Instances

Show Database |
Monoid Database |

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

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

Instances

Eq Query |
Data Query |
Show Query |
Typeable Query |
Monoid Query |

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.

Instances

Eq Score |
Ord Score |
Show Score |
Monoid Score |

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 docs :: TagStr

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.