diff options
author | David Waern <david.waern@gmail.com> | 2010-08-29 13:03:28 +0000 |
---|---|---|
committer | David Waern <david.waern@gmail.com> | 2010-08-29 13:03:28 +0000 |
commit | d5ec98534422eba93298bb8a76e6b315a55c3158 (patch) | |
tree | 72a4c3e98b60199e4bf1808878a81d441fa9b84c /src/Haddock/Backends/Xhtml | |
parent | a01b2ef92f9164734d6673b1f3e01cde8da477c8 (diff) |
Add source entity path to --read-interface
You can now use this flag like this:
--read-interface=<html path>,<source entity path>,<.haddock file>
By "source entity path" I mean the same thing that is specified with the
--source-entity flag. The purpose of this is to be able to specify the source
entity path per package, to allow source links to work in the presence of
cross-package documentation.
When given two arguments or less the --read-interface flag behaves as before.
Diffstat (limited to 'src/Haddock/Backends/Xhtml')
-rw-r--r-- | src/Haddock/Backends/Xhtml/Layout.hs | 6 | ||||
-rw-r--r-- | src/Haddock/Backends/Xhtml/Types.hs | 10 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/Haddock/Backends/Xhtml/Layout.hs b/src/Haddock/Backends/Xhtml/Layout.hs index 5ffdf181..295af305 100644 --- a/src/Haddock/Backends/Xhtml/Layout.hs +++ b/src/Haddock/Backends/Xhtml/Layout.hs @@ -42,6 +42,7 @@ import Haddock.Backends.Xhtml.Utils import Haddock.Types import Haddock.Utils (makeAnchorId) +import qualified Data.Map as Map import Text.XHtml hiding ( name, title, p, quote ) import FastString ( unpackFS ) @@ -175,10 +176,10 @@ declElem = paragraph ! [theclass "src"] -- a box for top level documented names -- it adds a source and wiki link at the right hand side of the box topDeclElem :: LinksInfo -> SrcSpan -> DocName -> Html -> Html -topDeclElem ((_,_,maybe_source_url), (_,_,maybe_wiki_url)) loc name html = +topDeclElem ((_,_,sourceMap), (_,_,maybe_wiki_url)) loc name html = declElem << (html +++ srcLink +++ wikiLink) where srcLink = - case maybe_source_url of + case Map.lookup origPkg sourceMap of Nothing -> noHtml Just url -> let url' = spliceURL (Just fname) (Just origMod) (Just n) (Just loc) url @@ -196,6 +197,7 @@ topDeclElem ((_,_,maybe_source_url), (_,_,maybe_wiki_url)) loc name html = -- TODO: do something about type instances. They will point to -- the module defining the type family, which is wrong. origMod = nameModule n + origPkg = modulePackageId origMod -- Name must be documented, otherwise we wouldn't get here Documented n mdl = name diff --git a/src/Haddock/Backends/Xhtml/Types.hs b/src/Haddock/Backends/Xhtml/Types.hs index 4e23f469..7bff0eb1 100644 --- a/src/Haddock/Backends/Xhtml/Types.hs +++ b/src/Haddock/Backends/Xhtml/Types.hs @@ -16,10 +16,14 @@ module Haddock.Backends.Xhtml.Types ( ) where +import Data.Map +import GHC + + -- the base, module and entity URLs for the source code and wiki links. -type SourceURLs = (Maybe String, Maybe String, Maybe String) -type WikiURLs = (Maybe String, Maybe String, Maybe String) +type SourceURLs = (Maybe FilePath, Maybe FilePath, Map PackageId FilePath) +type WikiURLs = (Maybe FilePath, Maybe FilePath, Maybe FilePath) --- The URL for source and wiki links, and the current module +-- The URL for source and wiki links type LinksInfo = (SourceURLs, WikiURLs) |