diff options
| author | Simon Marlow <marlowsd@gmail.com> | 2010-07-14 08:49:21 +0000 | 
|---|---|---|
| committer | Simon Marlow <marlowsd@gmail.com> | 2010-07-14 08:49:21 +0000 | 
| commit | 8a74f84ddfa0b6255790daf1a07e77fa0aa1514a (patch) | |
| tree | 9d1d6d97c22efefc5efc5963a1ab31b227e2c399 /src | |
| parent | 06cfd96e5597d9eed57de37ffacf46d893938bc1 (diff) | |
common up code for instance rendering
Diffstat (limited to 'src')
| -rw-r--r-- | src/Haddock/Backends/LaTeX.hs | 26 | 
1 files changed, 16 insertions, 10 deletions
diff --git a/src/Haddock/Backends/LaTeX.hs b/src/Haddock/Backends/LaTeX.hs index b9615fc6..e349e594 100644 --- a/src/Haddock/Backends/LaTeX.hs +++ b/src/Haddock/Backends/LaTeX.hs @@ -496,14 +496,24 @@ ppClassDecl instances loc mbDoc subdocs  --    atTable = abovesSep s8 $ [ ppAssocType summary links doc at unicode | at <- ats  --                             , let doc = lookupAnySubdoc (tcdName $ unL at) subdocs ] -    instancesBit -      | null instances = empty -      | all (isNothing . snd) instances = -        declWithDoc (vcat (map (ppInstDecl unicode) (map fst instances))) Nothing -      | otherwise = vcat (map (ppDocInstance unicode) instances) +    instancesBit = ppDocInstances unicode instances  ppClassDecl _ _ _ _ _ _ = error "declaration type not supported by ppShortClassDecl" +ppDocInstances :: Bool -> [DocInstance DocName] -> LaTeX +ppDocInstances unicode [] = empty +ppDocInstances unicode (i : rest) +  | Just ihead <- isUndocdInstance i +  = declWithDoc (vcat (map (ppInstDecl unicode) (ihead:is))) Nothing $$ +    ppDocInstances unicode rest' +  | otherwise  +  = ppDocInstance unicode i $$ ppDocInstances unicode rest +  where +    (is, rest') = spanWith isUndocdInstance rest + +isUndocdInstance :: DocInstance a -> Maybe (InstHead a) +isUndocdInstance (i,Nothing) = Just i +isUndocdInstance _ = Nothing  -- | Print a possibly commented instance. The instance header is printed inside  -- an 'argBox'. The comment is printed to the right of the box in normal comment @@ -563,11 +573,7 @@ ppDataDecl instances subdocs _loc mbDoc dataDecl unicode            vcat (zipWith (ppSideBySideConstr subdocs unicode) leaders cons) $$            text "\\end{tabulary}\\par" -    instancesBit -      | null instances = empty -      | all (isNothing . snd) instances = -        declWithDoc (vcat (map (ppInstDecl unicode) (map fst instances))) Nothing -      | otherwise = vcat (map (ppDocInstance unicode) instances) +    instancesBit = ppDocInstances unicode instances  -- ppConstrHdr is for (non-GADT) existentials constructors' syntax  | 
