Skip to content

Commit 4982c01

Browse files
committed
Only make image if necessary.
1 parent 43b93ba commit 4982c01

6 files changed

Lines changed: 23 additions & 60 deletions

File tree

docgen/Main.hs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414

1515
module Main where
1616

17-
import qualified Language.PureScript as P
18-
import System.Console.CmdTheLine
1917
import Control.Applicative
2018
import Control.Monad
2119
import 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
2720
import 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

2929
docgen :: FilePath -> IO ()
3030
docgen input = do
@@ -61,6 +61,7 @@ renderModules ms = do
6161
renderModule :: P.Module -> Docs
6262
renderModule (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

8688
isExported :: Maybe [P.DeclarationRef] -> P.Declaration -> Bool
8789
isExported Nothing _ = True
88-
isExported _ (P.TypeInstanceDeclaration _ _ _ _ _) = True
90+
isExported _ P.TypeInstanceDeclaration{} = True
8991
isExported exps (P.PositionedDeclaration _ d) = isExported exps d
9092
isExported (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 ["![typeclasses](typeclasses.png)"]
115+
renderTypeclassImage :: P.ModuleName -> Docs
116+
renderTypeclassImage name =
117+
let name' = P.runModuleName name
118+
in tell ["![" ++ name' ++ "](images/" ++ name' ++ ".png)"]
115119

116120
renderDeclaration :: Int -> Maybe [P.DeclarationRef] -> P.Declaration -> Docs
117121
renderDeclaration n _ (P.TypeDeclaration ident ty) =

docs/source/prelude.rst

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ Types
1717
Type Classes
1818
~~~~~~~~~~~~
1919

20-
.. figure:: typeclasses.png
21-
:alt: typeclasses
20+
.. figure:: images/Prelude.png
21+
:alt: Prelude
2222

23-
typeclasses
23+
Prelude
2424
::
2525

2626
class Alternative f where
@@ -215,10 +215,6 @@ Types
215215
Type Classes
216216
~~~~~~~~~~~~
217217

218-
.. figure:: typeclasses.png
219-
:alt: typeclasses
220-
221-
typeclasses
222218
Type Class Instances
223219
~~~~~~~~~~~~~~~~~~~~
224220

@@ -243,10 +239,6 @@ Types
243239
Type Classes
244240
~~~~~~~~~~~~
245241

246-
.. figure:: typeclasses.png
247-
:alt: typeclasses
248-
249-
typeclasses
250242
Type Class Instances
251243
~~~~~~~~~~~~~~~~~~~~
252244

@@ -270,10 +262,6 @@ Types
270262
Type Classes
271263
~~~~~~~~~~~~
272264

273-
.. figure:: typeclasses.png
274-
:alt: typeclasses
275-
276-
typeclasses
277265
Type Class Instances
278266
~~~~~~~~~~~~~~~~~~~~
279267

@@ -299,10 +287,6 @@ Types
299287
Type Classes
300288
~~~~~~~~~~~~
301289

302-
.. figure:: typeclasses.png
303-
:alt: typeclasses
304-
305-
typeclasses
306290
Type Class Instances
307291
~~~~~~~~~~~~~~~~~~~~
308292

@@ -346,10 +330,6 @@ Types
346330
Type Classes
347331
~~~~~~~~~~~~
348332

349-
.. figure:: typeclasses.png
350-
:alt: typeclasses
351-
352-
typeclasses
353333
Type Class Instances
354334
~~~~~~~~~~~~~~~~~~~~
355335

@@ -373,10 +353,6 @@ Types
373353
Type Classes
374354
~~~~~~~~~~~~
375355

376-
.. figure:: typeclasses.png
377-
:alt: typeclasses
378-
379-
typeclasses
380356
Type Class Instances
381357
~~~~~~~~~~~~~~~~~~~~
382358

@@ -406,10 +382,6 @@ Types
406382
Type Classes
407383
~~~~~~~~~~~~
408384

409-
.. figure:: typeclasses.png
410-
:alt: typeclasses
411-
412-
typeclasses
413385
Type Class Instances
414386
~~~~~~~~~~~~~~~~~~~~
415387

hierarchy/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ compile input mOutput = do
5757
let hier = "digraph Prelude {\n" ++ intercalate "\n" (concatMap (fmap ((" " ++) . (++ ";") . show)) supers) ++ "\n}"
5858
case mOutput of
5959
Just output -> U.writeFile output hier
60-
Nothing -> U.putStrLn hier
60+
Nothing -> U.putStrLn hier
6161
exitSuccess
6262

6363
superClasses :: P.Declaration -> [SuperMap]

prelude/README.md

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
### Type Classes
1313

14-
![typeclasses](typeclasses.png)
14+
![Prelude](images/Prelude.png)
1515

1616
class Alternative f where
1717
empty :: forall a. f a
@@ -200,8 +200,6 @@
200200

201201
### Type Classes
202202

203-
![typeclasses](typeclasses.png)
204-
205203

206204
### Type Class Instances
207205

@@ -221,8 +219,6 @@
221219

222220
### Type Classes
223221

224-
![typeclasses](typeclasses.png)
225-
226222

227223
### Type Class Instances
228224

@@ -241,8 +237,6 @@
241237

242238
### Type Classes
243239

244-
![typeclasses](typeclasses.png)
245-
246240

247241
### Type Class Instances
248242

@@ -263,8 +257,6 @@
263257

264258
### Type Classes
265259

266-
![typeclasses](typeclasses.png)
267-
268260

269261
### Type Class Instances
270262

@@ -303,8 +295,6 @@
303295

304296
### Type Classes
305297

306-
![typeclasses](typeclasses.png)
307-
308298

309299
### Type Class Instances
310300

@@ -323,8 +313,6 @@
323313

324314
### Type Classes
325315

326-
![typeclasses](typeclasses.png)
327-
328316

329317
### Type Class Instances
330318

@@ -349,8 +337,6 @@
349337

350338
### Type Classes
351339

352-
![typeclasses](typeclasses.png)
353-
354340

355341
### Type Class Instances
356342

prelude/updateDocs.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
../dist/build/docgen/docgen prelude.purs > README.md
2-
../dist/build/hierarchy/hierarchy prelude.purs | dot -Tpng -o typeclasses.png
2+
mkdir -p images
3+
../dist/build/hierarchy/hierarchy prelude.purs | dot -Tpng -o images/Prelude.png
34
pandoc -o ../docs/source/prelude.rst README.md

0 commit comments

Comments
 (0)