@@ -61,29 +61,35 @@ renderModules ms = do
61renderModule :: P.Module -> Docs
61renderModule :: P.Module -> Docs
62renderModule (P.Module moduleName ds exps) =
62renderModule (P.Module moduleName ds exps) =
63 let exported = filter (isExported exps) ds
63 let exported = filter (isExported exps) ds
64+ hasTypes = any isTypeDeclaration ds
64 hasTypeclasses = any isTypeClassDeclaration ds
65 hasTypeclasses = any isTypeClassDeclaration ds
66+ hasTypeclassInstances = any isTypeInstanceDeclaration ds
67+ hasValues = any isValueDeclaration ds
66 headerLevel 2 $ "Module " ++ P.runModuleName moduleName
69 headerLevel 2 $ "Module " ++ P.runModuleName moduleName
68− headerLevel 3 "Types"
72+ headerLevel 3 "Types"
70− renderTopLevel exps (filter isTypeDeclaration exported)
74+ renderTopLevel exps (filter isTypeDeclaration exported)
72− headerLevel 3 "Type Classes"
74 when hasTypeclasses $ do
76 when hasTypeclasses $ do
77+ headerLevel 3 "Type Classes"
75 renderTypeclassImage moduleName
79 renderTypeclassImage moduleName
77− renderTopLevel exps (filter isTypeClassDeclaration exported)
81+ renderTopLevel exps (filter isTypeClassDeclaration exported)
83+ when hasTypeclassInstances $ do
79− headerLevel 3 "Type Class Instances"
84+ headerLevel 3 "Type Class Instances"
81− renderTopLevel exps (filter isTypeInstanceDeclaration ds)
86+ renderTopLevel exps (filter isTypeInstanceDeclaration ds)
83− headerLevel 3 "Values"
89+ headerLevel 3 "Values"
85− renderTopLevel exps (filter isValueDeclaration exported)
91+ renderTopLevel exps (filter isValueDeclaration exported)
88isExported :: Maybe [P.DeclarationRef] -> P.Declaration -> Bool
94isExported :: Maybe [P.DeclarationRef] -> P.Declaration -> Bool
89isExported Nothing _ = True
95isExported Nothing _ = True