-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A documentation-generation tool for Haskell libraries -- -- Haddock is a documentation-generation tool for Haskell libraries @package haddock @version 2.9.2 -- | The Haddock API: A rudimentory, highly experimental API exposing some -- of the internals of Haddock. Don't expect it to be stable. module Documentation.Haddock -- | Interface holds all information used to render a single Haddock -- page. It represents the interface of a module. The core -- business of Haddock lies in creating this structure. Note that the -- record contains some fields that are only used to create the final -- record, and that are not used by the backends. data Interface Interface :: Module -> FilePath -> !HaddockModInfo Name -> !Maybe (Doc Name) -> Maybe (Doc DocName) -> ![DocOption] -> Map Name DeclInfo -> Map Name (DocForDecl DocName) -> Map Name [Name] -> ![ExportItem Name] -> [ExportItem DocName] -> ![Name] -> ![Name] -> ![Instance] -> Map Name (Doc Name) -> (Int, Int) -> Interface -- | The module behind this interface. ifaceMod :: Interface -> Module -- | Original file name of the module. ifaceOrigFilename :: Interface -> FilePath -- | Textual information about the module. ifaceInfo :: Interface -> !HaddockModInfo Name -- | Documentation header. ifaceDoc :: Interface -> !Maybe (Doc Name) -- | Documentation header with cross-reference information. ifaceRnDoc :: Interface -> Maybe (Doc DocName) -- | Haddock options for this module (prune, ignore-exports, etc). ifaceOptions :: Interface -> ![DocOption] -- | Declarations originating from the module. Excludes declarations -- without names (instances and stand-alone documentation comments). -- Includes names of subordinate declarations mapped to their parent -- declarations. ifaceDeclMap :: Interface -> Map Name DeclInfo -- | Documentation of declarations originating from the module (including -- subordinates). ifaceRnDocMap :: Interface -> Map Name (DocForDecl DocName) ifaceSubMap :: Interface -> Map Name [Name] ifaceExportItems :: Interface -> ![ExportItem Name] ifaceRnExportItems :: Interface -> [ExportItem DocName] -- | All names exported by the module. ifaceExports :: Interface -> ![Name] -- | All "visible" names exported by the module. A visible name is a name -- that will show up in the documentation of the module. ifaceVisibleExports :: Interface -> ![Name] -- | Instances exported by the module. ifaceInstances :: Interface -> ![Instance] -- | Documentation of instances defined in the module. ifaceInstanceDocMap :: Interface -> Map Name (Doc Name) -- | The number of haddockable and haddocked items in the module, as a -- tuple. Haddockable items are the exports and the module itself. ifaceHaddockCoverage :: Interface -> (Int, Int) -- | A subset of the fields of Interface that we store in the -- interface files. data InstalledInterface InstalledInterface :: Module -> HaddockModInfo Name -> Map Name (DocForDecl Name) -> [Name] -> [Name] -> [DocOption] -> Map Name [Name] -> InstalledInterface -- | The module represented by this interface. instMod :: InstalledInterface -> Module -- | Textual information about the module. instInfo :: InstalledInterface -> HaddockModInfo Name -- | Documentation of declarations originating from the module (including -- subordinates). instDocMap :: InstalledInterface -> Map Name (DocForDecl Name) -- | All names exported by this module. instExports :: InstalledInterface -> [Name] -- | All "visible" names exported by the module. A visible name is a name -- that will show up in the documentation of the module. instVisibleExports :: InstalledInterface -> [Name] -- | Haddock options for this module (prune, ignore-exports, etc). instOptions :: InstalledInterface -> [DocOption] instSubMap :: InstalledInterface -> Map Name [Name] -- | Create Interface structures from a given list of Haddock -- command-line flags and file or module names (as accepted by -- haddock executable). Flags that control documentation -- generation or show help or version information are ignored. createInterfaces :: [Flag] -> [String] -> IO [Interface] -- | Create Interfaces and a link environment by typechecking the -- list of modules using the GHC API and processing the resulting syntax -- trees. processModules :: Verbosity -> [String] -> [Flag] -> [InterfaceFile] -> Ghc ([Interface], LinkEnv) data ExportItem name -- | An exported declaration. ExportDecl :: LHsDecl name -> DocForDecl name -> [(name, DocForDecl name)] -> [DocInstance name] -> ExportItem name -- | A declaration. expItemDecl :: ExportItem name -> LHsDecl name -- | Maybe a doc comment, and possibly docs for arguments (if this decl is -- a function or type-synonym). expItemMbDoc :: ExportItem name -> DocForDecl name -- | Subordinate names, possibly with documentation. expItemSubDocs :: ExportItem name -> [(name, DocForDecl name)] -- | Instances relevant to this declaration, possibly with documentation. expItemInstances :: ExportItem name -> [DocInstance name] -- | An exported entity for which we have no documentation (perhaps because -- it resides in another package). ExportNoDecl :: name -> [name] -> ExportItem name expItemName :: ExportItem name -> name -- | Subordinate names. expItemSubs :: ExportItem name -> [name] -- | A section heading. ExportGroup :: Int -> String -> Doc name -> ExportItem name -- | Section level (1, 2, 3, ...). expItemSectionLevel :: ExportItem name -> Int -- | Section id (for hyperlinks). expItemSectionId :: ExportItem name -> String -- | Section heading text. expItemSectionText :: ExportItem name -> Doc name -- | Some documentation. ExportDoc :: (Doc name) -> ExportItem name -- | A cross-reference to another module. ExportModule :: Module -> ExportItem name type Decl = LHsDecl Name -- | A declaration that may have documentation, including its subordinates, -- which may also have documentation. type DeclInfo = (Decl, DocForDecl Name, [(Name, DocForDecl Name)]) type DocForDecl name = (Maybe (Doc name), FnArgsDoc name) -- | Arguments and result are indexed by Int, zero-based from the left, -- because that's the easiest to use when recursing over types. type FnArgsDoc name = Map Int (Doc name) -- | Type of environment used to cross-reference identifiers in the syntax. type LinkEnv = Map Name Module -- | Extends Name with cross-reference information. data DocName -- | This thing is part of the (existing or resulting) documentation. The -- Module is the preferred place in the documentation to refer to. Documented :: Name -> Module -> DocName -- | This thing is not part of the (existing or resulting) documentation, -- as far as Haddock knows. Undocumented :: Name -> DocName -- | An instance head that may have documentation. type DocInstance name = (InstHead name, Maybe (Doc name)) -- | The head of an instance. Consists of a context, a class name and a -- list of instance types. type InstHead name = ([HsPred name], name, [HsType name]) data Doc id DocEmpty :: Doc id DocAppend :: (Doc id) -> (Doc id) -> Doc id DocString :: String -> Doc id DocParagraph :: (Doc id) -> Doc id DocIdentifier :: [id] -> Doc id DocModule :: String -> Doc id DocEmphasis :: (Doc id) -> Doc id DocMonospaced :: (Doc id) -> Doc id DocUnorderedList :: [Doc id] -> Doc id DocOrderedList :: [Doc id] -> Doc id DocDefList :: [(Doc id, Doc id)] -> Doc id DocCodeBlock :: (Doc id) -> Doc id DocURL :: String -> Doc id DocPic :: String -> Doc id DocAName :: String -> Doc id DocExamples :: [Example] -> Doc id data Example Example :: String -> [String] -> Example exampleExpression :: Example -> String exampleResult :: Example -> [String] data DocMarkup id a Markup :: a -> (String -> a) -> (a -> a) -> (a -> a -> a) -> ([id] -> a) -> (String -> a) -> (a -> a) -> (a -> a) -> ([a] -> a) -> ([a] -> a) -> ([(a, a)] -> a) -> (a -> a) -> (String -> a) -> (String -> a) -> (String -> a) -> ([Example] -> a) -> DocMarkup id a markupEmpty :: DocMarkup id a -> a markupString :: DocMarkup id a -> String -> a markupParagraph :: DocMarkup id a -> a -> a markupAppend :: DocMarkup id a -> a -> a -> a markupIdentifier :: DocMarkup id a -> [id] -> a markupModule :: DocMarkup id a -> String -> a markupEmphasis :: DocMarkup id a -> a -> a markupMonospaced :: DocMarkup id a -> a -> a markupUnorderedList :: DocMarkup id a -> [a] -> a markupOrderedList :: DocMarkup id a -> [a] -> a markupDefList :: DocMarkup id a -> [(a, a)] -> a markupCodeBlock :: DocMarkup id a -> a -> a markupURL :: DocMarkup id a -> String -> a markupAName :: DocMarkup id a -> String -> a markupPic :: DocMarkup id a -> String -> a markupExample :: DocMarkup id a -> [Example] -> a data HaddockModInfo name HaddockModInfo :: Maybe (Doc name) -> Maybe String -> Maybe String -> Maybe String -> HaddockModInfo name hmi_description :: HaddockModInfo name -> Maybe (Doc name) hmi_portability :: HaddockModInfo name -> Maybe String hmi_stability :: HaddockModInfo name -> Maybe String hmi_maintainer :: HaddockModInfo name -> Maybe String markup :: DocMarkup id a -> Doc id -> a data InterfaceFile InterfaceFile :: LinkEnv -> [InstalledInterface] -> InterfaceFile ifLinkEnv :: InterfaceFile -> LinkEnv ifInstalledIfaces :: InterfaceFile -> [InstalledInterface] -- | Read a Haddock (.haddock) interface file. Return either an -- InterfaceFile or an error message. -- -- This function can be called in two ways. Within a GHC session it will -- update the use and update the session's name cache. Outside a GHC -- session a new empty name cache is used. The function is therefore -- generic in the monad being used. The exact monad is whichever monad -- the first argument, the getter and setter of the name cache, requires. readInterfaceFile :: MonadIO m => NameCacheAccessor m -> FilePath -> m (Either String InterfaceFile) nameCacheFromGhc :: NameCacheAccessor Ghc freshNameCache :: NameCacheAccessor IO type NameCacheAccessor m = (m NameCache, NameCache -> m ()) data Flag Flag_BuiltInThemes :: Flag Flag_CSS :: String -> Flag Flag_ReadInterface :: String -> Flag Flag_DumpInterface :: String -> Flag Flag_Heading :: String -> Flag Flag_Html :: Flag Flag_Hoogle :: Flag Flag_Lib :: String -> Flag Flag_OutputDir :: FilePath -> Flag Flag_Prologue :: FilePath -> Flag Flag_SourceBaseURL :: String -> Flag Flag_SourceModuleURL :: String -> Flag Flag_SourceEntityURL :: String -> Flag Flag_WikiBaseURL :: String -> Flag Flag_WikiModuleURL :: String -> Flag Flag_WikiEntityURL :: String -> Flag Flag_LaTeX :: Flag Flag_LaTeXStyle :: String -> Flag Flag_Help :: Flag Flag_Verbosity :: String -> Flag Flag_Version :: Flag Flag_UseContents :: String -> Flag Flag_GenContents :: Flag Flag_UseIndex :: String -> Flag Flag_GenIndex :: Flag Flag_IgnoreAllExports :: Flag Flag_HideModule :: String -> Flag Flag_OptGhc :: String -> Flag Flag_GhcLibDir :: String -> Flag Flag_GhcVersion :: Flag Flag_PrintGhcLibDir :: Flag Flag_NoWarnings :: Flag Flag_UseUnicode :: Flag Flag_NoTmpCompDir :: Flag Flag_Qualification :: String -> Flag Flag_PrettyHtml :: Flag -- | Source-level options for controlling the documentation. data DocOption -- | This module should not appear in the docs. OptHide :: DocOption OptPrune :: DocOption -- | Pretend everything is exported. OptIgnoreExports :: DocOption -- | Not the best place to get docs for things exported by this module. OptNotHome :: DocOption