@@ -14,17 +14,17 @@
1414
1515module Main where
1616
17−import qualified Language.PureScript as P
18−import System.Console.CmdTheLine
1917import Control.Applicative
2018import Control.Monad
2119import Control.Monad.Writer
22−import System.Exit (exitSuccess, exitFailure)
23−import qualified System.IO.UTF8 as U
24−import qualified Paths_purescript as Paths
25−import Data.Version (showVersion)
26−import Data.List
2720import Data.Function (on)
21+import Data.List
22+import Data.Version (showVersion)
23+import qualified Language.PureScript as P
24+import qualified Paths_purescript as Paths
25+import qualified System.IO.UTF8 as U
26+import System.Console.CmdTheLine
27+import System.Exit (exitSuccess, exitFailure)
2828
2929docgen :: FilePath -> IO ()
3030docgen input = do
@@ -61,6 +61,7 @@ renderModules ms = do
6161renderModule :: P.Module -> Docs
6262renderModule (P.Module moduleName ds exps) =
6363 let exported = filter (isExported exps) ds
64+ hasTypeclasses = any isTypeClassDeclaration ds
6465 in do
6566 headerLevel 2 $ "Module " ++ P.runModuleName moduleName
6667 spacer
@@ -70,8 +71,9 @@ renderModule (P.Module moduleName ds exps) =
7071 spacer
7172 headerLevel 3 "Type Classes"
7273 spacer
73− renderTypeclassImage
74− spacer
74+ when hasTypeclasses $ do
75+ renderTypeclassImage moduleName
76+ spacer
7577 renderTopLevel exps (filter isTypeClassDeclaration exported)
7678 spacer
7779 headerLevel 3 "Type Class Instances"
@@ -85,7 +87,7 @@ renderModule (P.Module moduleName ds exps) =
8587
8688isExported :: Maybe [P.DeclarationRef] -> P.Declaration -> Bool
8789isExported Nothing _ = True
88−isExported _ (P.TypeInstanceDeclaration _ _ _ _ _) = True
90+isExported _ P.TypeInstanceDeclaration{} = True
8991isExported exps (P.PositionedDeclaration _ d) = isExported exps d
9092isExported (Just exps) decl = any (matches decl) exps
9193 where
@@ -110,8 +112,10 @@ renderTopLevel exps decls = forM_ (sortBy (compare `on` getName) decls) $ \decl
110112 renderDeclaration 4 exps decl
111113 spacer
112114
113−renderTypeclassImage :: Docs
114−renderTypeclassImage = tell [""]
115+renderTypeclassImage :: P.ModuleName -> Docs
116+renderTypeclassImage name =
117+ let name' = P.runModuleName name
118+ in tell [""]
115119
116120renderDeclaration :: Int -> Maybe [P.DeclarationRef] -> P.Declaration -> Docs
117121renderDeclaration n _ (P.TypeDeclaration ident ty) =