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/Options.hs | |
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/Options.hs')
-rw-r--r-- | src/Haddock/Options.hs | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/Haddock/Options.hs b/src/Haddock/Options.hs index b855f545..65c3092e 100644 --- a/src/Haddock/Options.hs +++ b/src/Haddock/Options.hs @@ -26,7 +26,7 @@ module Haddock.Options ( optLaTeXStyle, verbosity, ghcFlags, - ifacePairs + ifaceTriples ) where @@ -230,14 +230,17 @@ ghcFlags :: [Flag] -> [String] ghcFlags flags = [ option | Flag_OptGhc option <- flags ] -ifacePairs :: [Flag] -> [(FilePath, FilePath)] -ifacePairs flags = [ parseIfaceOption s | Flag_ReadInterface s <- flags ] +ifaceTriples :: [Flag] -> [(DocPaths, FilePath)] +ifaceTriples flags = [ parseIfaceOption s | Flag_ReadInterface s <- flags ] where - parseIfaceOption :: String -> (FilePath, FilePath) + parseIfaceOption :: String -> (DocPaths, FilePath) parseIfaceOption str = case break (==',') str of - (fpath, ',':file) -> (fpath, file) - (file, _) -> ("", file) + (fpath, ',':rest) -> + case break (==',') rest of + (src, ',':file) -> ((fpath, Just src), file) + (file, _) -> ((fpath, Nothing), file) + (file, _) -> (("", Nothing), file) -- | Like 'listToMaybe' but returns the last element instead of the first. |