[commit: haddock] master: Extract main hyperlinker types to separate module. (fcaa46b)
git at git.haskell.org
git at git.haskell.org
Wed Jul 8 08:43:00 UTC 2015
Repository : ssh://git@git.haskell.org/haddock
On branch : master
Link : http://git.haskell.org/haddock.git/commitdiff/fcaa46b054fc3b5a5535a748d3c3283629e3eadf
>---------------------------------------------------------------
commit fcaa46b054fc3b5a5535a748d3c3283629e3eadf
Author: Łukasz Hanuszczak <lukasz.hanuszczak at gmail.com>
Date: Mon Jul 6 16:39:57 2015 +0200
Extract main hyperlinker types to separate module.
>---------------------------------------------------------------
fcaa46b054fc3b5a5535a748d3c3283629e3eadf
haddock-api/haddock-api.cabal | 1 +
haddock-api/src/Haddock/Backends/Hyperlinker.hs | 1 +
.../src/Haddock/Backends/Hyperlinker/Ast.hs | 27 ++--------
.../src/Haddock/Backends/Hyperlinker/Parser.hs | 40 ++-------------
.../src/Haddock/Backends/Hyperlinker/Renderer.hs | 4 +-
.../src/Haddock/Backends/Hyperlinker/Types.hs | 59 ++++++++++++++++++++++
.../src/Haddock/Backends/Hyperlinker/Utils.hs | 1 +
haddock-api/src/Haddock/Interface/Create.hs | 1 +
haddock-api/src/Haddock/Types.hs | 3 +-
haddock.cabal | 5 ++
10 files changed, 79 insertions(+), 63 deletions(-)
diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal
index 11567f9..3838c3d 100644
--- a/haddock-api/haddock-api.cabal
+++ b/haddock-api/haddock-api.cabal
@@ -85,6 +85,7 @@ library
Haddock.Backends.Hyperlinker.Ast
Haddock.Backends.Hyperlinker.Parser
Haddock.Backends.Hyperlinker.Renderer
+ Haddock.Backends.Hyperlinker.Types
Haddock.Backends.Hyperlinker.Utils
Haddock.ModuleTree
Haddock.Types
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker.hs b/haddock-api/src/Haddock/Backends/Hyperlinker.hs
index f007f97..4b58190 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker.hs
@@ -3,6 +3,7 @@ module Haddock.Backends.Hyperlinker
, module Haddock.Backends.Hyperlinker.Utils
) where
+
import Haddock.Types
import Haddock.Backends.Hyperlinker.Renderer
import Haddock.Backends.Hyperlinker.Utils
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
index 9d5c127..28fdc3f 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Ast.hs
@@ -3,12 +3,10 @@
{-# LANGUAGE RecordWildCards #-}
-module Haddock.Backends.Hyperlinker.Ast
- ( enrich
- , RichToken(..), TokenDetails(..), rtkName
- ) where
+module Haddock.Backends.Hyperlinker.Ast (enrich) where
-import Haddock.Backends.Hyperlinker.Parser
+
+import Haddock.Backends.Hyperlinker.Types
import qualified GHC
@@ -16,25 +14,6 @@ import Control.Applicative
import Data.Data
import Data.Maybe
-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
-- | Add more detailed information to token stream using GHC API.
enrich :: GHC.RenamedSource -> [Token] -> [RichToken]
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs
index d927aa0..e206413 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Parser.hs
@@ -1,44 +1,12 @@
-module Haddock.Backends.Hyperlinker.Parser
- ( parse
- , Token(..), TokenType(..)
- , Position(..), Span(..)
- ) where
+module Haddock.Backends.Hyperlinker.Parser (parse) where
+
import Data.Char
import Data.List
import Data.Maybe
-data Token = Token
- { tkType :: TokenType
- , tkValue :: String
- , tkSpan :: Span
- }
-
-data Position = Position
- { posRow :: !Int
- , posCol :: !Int
- }
-
-data Span = Span
- { spStart :: Position
- , spEnd :: Position
- }
-
-data TokenType
- = TkIdentifier
- | TkKeyword
- | TkString
- | TkChar
- | TkNumber
- | TkOperator
- | TkGlyph
- | TkSpecial
- | TkSpace
- | TkComment
- | TkCpp
- | TkPragma
- | TkUnknown
- deriving (Show, Eq)
+import Haddock.Backends.Hyperlinker.Types
+
-- | Turn source code string into a stream of more descriptive tokens.
--
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
index a4d7bc2..add1465 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Renderer.hs
@@ -1,8 +1,8 @@
module Haddock.Backends.Hyperlinker.Renderer (render) where
+
import Haddock.Types
-import Haddock.Backends.Hyperlinker.Parser
-import Haddock.Backends.Hyperlinker.Ast
+import Haddock.Backends.Hyperlinker.Types
import Haddock.Backends.Hyperlinker.Utils
import qualified GHC
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Types.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Types.hs
new file mode 100644
index 0000000..19cc528
--- /dev/null
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Types.hs
@@ -0,0 +1,59 @@
+module Haddock.Backends.Hyperlinker.Types where
+
+
+import qualified GHC
+
+
+data Token = Token
+ { tkType :: TokenType
+ , tkValue :: String
+ , tkSpan :: Span
+ }
+
+data Position = Position
+ { posRow :: !Int
+ , posCol :: !Int
+ }
+
+data Span = Span
+ { spStart :: Position
+ , spEnd :: Position
+ }
+
+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
diff --git a/haddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs b/haddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs
index 9ba8446..db2bfc7 100644
--- a/haddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs
+++ b/haddock-api/src/Haddock/Backends/Hyperlinker/Utils.hs
@@ -4,6 +4,7 @@ module Haddock.Backends.Hyperlinker.Utils
, hypSrcModuleUrlFormat, hypSrcModuleNameUrlFormat,
) where
+
import Haddock.Backends.Xhtml.Utils
import GHC
diff --git a/haddock-api/src/Haddock/Interface/Create.hs b/haddock-api/src/Haddock/Interface/Create.hs
index 59f7076..0599151 100644
--- a/haddock-api/src/Haddock/Interface/Create.hs
+++ b/haddock-api/src/Haddock/Interface/Create.hs
@@ -21,6 +21,7 @@ import Haddock.GhcUtils
import Haddock.Utils
import Haddock.Convert
import Haddock.Interface.LexParseRn
+import Haddock.Backends.Hyperlinker.Types
import Haddock.Backends.Hyperlinker.Ast as Hyperlinker
import Haddock.Backends.Hyperlinker.Parser as Hyperlinker
diff --git a/haddock-api/src/Haddock/Types.hs b/haddock-api/src/Haddock/Types.hs
index da4b3ee..90dbb4d 100644
--- a/haddock-api/src/Haddock/Types.hs
+++ b/haddock-api/src/Haddock/Types.hs
@@ -35,7 +35,8 @@ import DynFlags (ExtensionFlag, Language)
import OccName
import Outputable
import Control.Monad (ap)
-import Haddock.Backends.Hyperlinker.Ast
+
+import Haddock.Backends.Hyperlinker.Types
-----------------------------------------------------------------------------
-- * Convenient synonyms
diff --git a/haddock.cabal b/haddock.cabal
index 2a1caee..8fa9f33 100644
--- a/haddock.cabal
+++ b/haddock.cabal
@@ -104,6 +104,11 @@ executable haddock
Haddock.Backends.HaddockDB
Haddock.Backends.Hoogle
Haddock.Backends.Hyperlinker
+ Haddock.Backends.Hyperlinker.Ast
+ Haddock.Backends.Hyperlinker.Parser
+ Haddock.Backends.Hyperlinker.Renderer
+ Haddock.Backends.Hyperlinker.Types
+ Haddock.Backends.Hyperlinker.Utils
Haddock.ModuleTree
Haddock.Types
Haddock.Doc
More information about the ghc-commits
mailing list