git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Only make image if necessary.
commit4982c01dc453e07f62dc934f549d314110c795f8 authorjoneshf <jones3.hardy@gmail.com> dateMon 14 Apr 2014, 07:13 (13 years ago) parent43b93ba
6 files changed+23−60
docgen/Main.hs+16−12 docs/source/prelude.rst+3−31 hierarchy/Main.hs+1−1 prelude/README.md+1−15 prelude/typeclasses.png → prelude/images/Prelude.png prelude/updateDocs.sh+2−1
docgen/Main.hs+16−12
@@ -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 ["![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
116120renderDeclaration :: Int -> Maybe [P.DeclarationRef] -> P.Declaration -> Docs
117121renderDeclaration n _ (P.TypeDeclaration ident ty) =
docs/source/prelude.rst+3−31
@@ -17,10 +17,10 @@ Types
1717Type 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
215215Type Classes
216216~~~~~~~~~~~~
217217
218−.. figure:: typeclasses.png
219− :alt: typeclasses
220−
221− typeclasses
222218Type Class Instances
223219~~~~~~~~~~~~~~~~~~~~
224220
@@ -243,10 +239,6 @@ Types
243239Type Classes
244240~~~~~~~~~~~~
245241
246−.. figure:: typeclasses.png
247− :alt: typeclasses
248−
249− typeclasses
250242Type Class Instances
251243~~~~~~~~~~~~~~~~~~~~
252244
@@ -270,10 +262,6 @@ Types
270262Type Classes
271263~~~~~~~~~~~~
272264
273−.. figure:: typeclasses.png
274− :alt: typeclasses
275−
276− typeclasses
277265Type Class Instances
278266~~~~~~~~~~~~~~~~~~~~
279267
@@ -299,10 +287,6 @@ Types
299287Type Classes
300288~~~~~~~~~~~~
301289
302−.. figure:: typeclasses.png
303− :alt: typeclasses
304−
305− typeclasses
306290Type Class Instances
307291~~~~~~~~~~~~~~~~~~~~
308292
@@ -346,10 +330,6 @@ Types
346330Type Classes
347331~~~~~~~~~~~~
348332
349−.. figure:: typeclasses.png
350− :alt: typeclasses
351−
352− typeclasses
353333Type Class Instances
354334~~~~~~~~~~~~~~~~~~~~
355335
@@ -373,10 +353,6 @@ Types
373353Type Classes
374354~~~~~~~~~~~~
375355
376−.. figure:: typeclasses.png
377− :alt: typeclasses
378−
379− typeclasses
380356Type Class Instances
381357~~~~~~~~~~~~~~~~~~~~
382358
@@ -406,10 +382,6 @@ Types
406382Type Classes
407383~~~~~~~~~~~~
408384
409−.. figure:: typeclasses.png
410− :alt: typeclasses
411−
412− typeclasses
413385Type Class Instances
414386~~~~~~~~~~~~~~~~~~~~
415387
hierarchy/Main.hs+1−1
@@ -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
6363superClasses :: P.Declaration -> [SuperMap]
prelude/README.md+1−15
@@ -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/typeclasses.png → prelude/images/Prelude.pngrenamed

Binary file not shown.

prelude/updateDocs.sh+2−1
@@ -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
34pandoc -o ../docs/source/prelude.rst README.md