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) =
0 commit comments