{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE CPP #-} -- | All types. module Haskell.Docs.Types (IdentDoc(..) ,DocsException(..) ,Identifier(..) ,PackageName(..) ,PkgID) where import Control.Exception (Exception) import Data.Text (Text) import Data.Typeable (Typeable) import Documentation.Haddock (Doc) import GHC (Id) import Module (ModuleName) #if __GLASGOW_HASKELL__ >= 800 import Module (UnitId) type PkgID = UnitId #elif __GLASGOW_HASKELL__ >= 710 import Module (PackageKey) type PkgID = PackageKey #else import PackageConfig (PackageIdentifier) type PkgID = PackageIdentifier #endif -- | 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 :: !PkgID , identDocIdentifier :: !Identifier , identDocModuleName :: !ModuleName , 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 | PackageLookupFailed !Text | NoModulePackageCombo | NoInterfaceFiles | NoParseInterfaceFiles [DocsException] | NoFindNameInExports | NoFindNameInInterface | NoReadInterfaceFile String deriving (Typeable,Show) instance Exception DocsException