diff options
Diffstat (limited to 'src/Haddock')
| -rw-r--r-- | src/Haddock/ModuleTree.hs | 6 | 
1 files changed, 6 insertions, 0 deletions
| diff --git a/src/Haddock/ModuleTree.hs b/src/Haddock/ModuleTree.hs index f3008d75..61812e3a 100644 --- a/src/Haddock/ModuleTree.hs +++ b/src/Haddock/ModuleTree.hs @@ -11,14 +11,17 @@  -----------------------------------------------------------------------------  module Haddock.ModuleTree ( ModuleTree(..), mkModuleTree ) where +  import Haddock.Types ( Doc )  import GHC           ( Name )  import Module        ( Module, moduleNameString, moduleName, modulePackageId,                         packageIdString ) +  data ModuleTree = Node String Bool (Maybe String) (Maybe (Doc Name)) [ModuleTree] +  mkModuleTree :: Bool -> [(Module, Maybe (Doc Name))] -> [ModuleTree]  mkModuleTree showPkgs mods =     foldr fn [] [ (splitModule mdl, modPkg mdl, short) | (mdl, short) <- mods ] @@ -27,6 +30,7 @@ mkModuleTree showPkgs mods =                  | otherwise = Nothing      fn (mod_,pkg,short) = addToTrees mod_ pkg short +  addToTrees :: [String] -> Maybe String -> Maybe (Doc Name) -> [ModuleTree] -> [ModuleTree]  addToTrees [] _ _ ts = ts  addToTrees ss pkg short [] = mkSubTree ss pkg short @@ -38,11 +42,13 @@ addToTrees (s1:ss) pkg short (t@(Node s2 leaf node_pkg node_short subs) : ts)    this_pkg = if null ss then pkg else node_pkg    this_short = if null ss then short else node_short +  mkSubTree :: [String] -> Maybe String -> Maybe (Doc Name) -> [ModuleTree]  mkSubTree []     _   _     = []  mkSubTree [s]    pkg short = [Node s True pkg short []]  mkSubTree (s:ss) pkg short = [Node s (null ss) Nothing Nothing (mkSubTree ss pkg short)] +  splitModule :: Module -> [String]  splitModule mdl = split (moduleNameString (moduleName mdl))    where split mod0 = case break (== '.') mod0 of | 
