module Haddock.Backends.Hyperlinker.Types where
import qualified GHC
import Data.Map (Map)
data Token = Token
{ tkType :: TokenType
, tkValue :: String
, tkSpan :: {-# UNPACK #-} !Span
}
deriving (Show)
type Position = GHC.RealSrcLoc
type Span = GHC.RealSrcSpan
data TokenType
= TkIdentifier
| TkKeyword
| TkString
| TkChar
| TkNumber
| TkOperator
| TkGlyph
| TkSpecial
| TkSpace
| TkComment
| TkCpp
| TkPragma
| TkUnknown
deriving (Show, Eq)
data RichToken = RichToken
{ rtkToken :: Token
, rtkDetails :: Maybe TokenDetails
}
data TokenDetails
= RtkVar GHC.Name
| RtkType GHC.Name
| RtkBind GHC.Name
| RtkDecl GHC.Name
| RtkModule GHC.ModuleName
deriving (Eq)
rtkName :: TokenDetails -> Either GHC.Name GHC.ModuleName
rtkName (RtkVar name) = Left name
rtkName (RtkType name) = Left name
rtkName (RtkBind name) = Left name
rtkName (RtkDecl name) = Left name
rtkName (RtkModule name) = Right name
data SrcPath
= SrcExternal FilePath
| SrcLocal
type SrcMap = Map GHC.Module SrcPath