{-# LANGUAGE DeriveDataTypeable #-} -- | All types. module Haskell.Docs.Types (IdentDoc(..) ,DocsException(..) ,Identifier(..) ,PackageName(..)) where import Control.Exception (Exception) import Data.Typeable (Typeable) import Documentation.Haddock (Doc) import GHC (Id) import Module (ModuleName) import PackageConfig (PackageIdentifier) -- | An identifier. newtype Identifier = Identifier {unIdentifier :: String} deriving (Show,Eq) -- | An package name. newtype PackageName = PackageName String deriving (Show,Eq) -- | Identier documentation along with argument docs and identifiers. data IdentDoc = IdentDoc { identDocPackageName :: !PackageIdentifier , identDocDocs :: !(Doc String) , identDocIdent :: !(Maybe Id) , identDocArgDocs :: !(Maybe [(Int, Doc String)]) } instance Eq IdentDoc where a == b = identDocIdent a == identDocIdent b -- | An exception when doing lookups. data DocsException = NoFindModule | NoModulePackageCombo | NoInterfaceFiles | NoParseInterfaceFiles [DocsException] | NoFindNameInExports | NoFindNameInInterface | NoReadInterfaceFile String deriving (Typeable,Show) instance Exception DocsException