Mercurial > projects > dil
annotate trunk/src/docgen/docgen.d @ 455:f92505ad18ab
Simple configuration reader, small modifications.
author | Jari-Matti M?kel? <jmjm@iki.fi> |
---|---|
date | Mon, 29 Oct 2007 21:27:02 +0200 |
parents | dbdc9fa5d479 |
children | de2675bc9afa |
rev | line source |
---|---|
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
1 /** |
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
2 * Author: Jari-Matti Mäkelä |
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
3 * License: GPL3 |
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
4 */ |
441 | 5 module docgen.docgen; |
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
6 |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
7 import docgen.sourcelisting.writers; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
8 import docgen.document.writers; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
9 import docgen.graphutils.writers; |
446 | 10 import docgen.misc.misc; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
11 import docgen.misc.parser; |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
12 import docgen.config.configurator; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
13 import tango.core.Array; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
14 import tango.io.stream.FileStream; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
15 import tango.text.Ascii; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
16 import tango.text.Util : replace; |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
17 import tango.io.FilePath; |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
18 debug import tango.io.Stdout; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
19 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
20 template DefaultDocGenerator(char[] genDir) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
21 abstract class DefaultDocGenerator : DocGenerator { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
22 DocGeneratorOptions m_options; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
23 DocumentWriter docWriter; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
24 GraphWriterFactory graphFactory; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
25 |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
26 Module[] modules; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
27 Edge[] edges; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
28 Vertex[char[]] vertices; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
29 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
30 this(DocGeneratorOptions options) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
31 m_options = options; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
32 graphFactory = new DefaultGraphWriterFactory(this); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
33 |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
34 // create output dir |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
35 (new FilePath(options.outputDir ~ "/" ~ genDir)).create(); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
36 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
37 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
38 // TODO: constructor for situations where parsing has happened elsewhere |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
39 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
40 char[] outPath(char[] file) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
41 return options.outputDir ~ "/" ~ genDir ~ "/" ~ file; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
42 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
43 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
44 void parseSources() { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
45 int id = 1; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
46 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
47 Parser.loadModules( |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
48 options.parser.rootPaths, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
49 options.parser.importPaths, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
50 options.parser.strRegexps, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
51 options.graph.includeUnlocatableModules, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
52 options.graph.depth, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
53 (char[] fqn, char[] path, Module m) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
54 if (m is null) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
55 if (fqn in vertices) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
56 debug Stdout.format("{} already set.\n", fqn); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
57 return; |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
58 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
59 } |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
60 auto vertex = new Vertex(fqn, path, id++); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
61 vertex.type = VertexType.UnlocatableModule; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
62 vertices[fqn] = vertex; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
63 debug Stdout.format("Setting {} = {}.\n", fqn, path); |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
64 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
65 } else { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
66 vertices[m.moduleFQN] = new Vertex(m.moduleFQN, m.filePath, id++); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
67 debug Stdout.format("Setting {} = {}.\n", m.moduleFQN, m.filePath); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
68 } |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
69 }, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
70 (Module imported, Module importer) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
71 debug Stdout.format("Connecting {} - {}.\n", imported.moduleFQN, importer.moduleFQN); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
72 edges ~= vertices[imported.moduleFQN].addChild(vertices[importer.moduleFQN]); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
73 }, |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
74 modules |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
75 ); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
76 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
77 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
78 void createDepGraph(char[] depGraphFile) { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
79 auto imgFile = new FileOutput(outPath(depGraphFile)); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
80 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
81 auto writer = graphFactory.createGraphWriter( docWriter, GraphFormat.Dot ); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
82 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
83 writer.generateDepGraph(vertices.values, edges, imgFile); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
84 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
85 imgFile.close(); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
86 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
87 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
88 public DocGeneratorOptions *options() { |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
89 return &m_options; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
90 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
91 } |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
92 } |
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
93 |
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
94 /** |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
95 * Main routine for LaTeX doc generation. |
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
96 */ |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
97 class LaTeXDocGenerator : DefaultDocGenerator!("latex") { |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
98 this(DocGeneratorOptions options) { |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
99 super(options); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
100 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
101 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
102 /** |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
103 * Generates document skeleton. |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
104 */ |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
105 void generateDoc(char[] docFileName) { |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
106 auto ddf = new DefaultDocumentWriterFactory(this); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
107 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
108 auto docFile = new FileOutput(outPath(docFileName)); |
454
dbdc9fa5d479
depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
453
diff
changeset
|
109 docWriter = ddf.createDocumentWriter( [ docFile ], DocFormat.LaTeX ); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
110 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
111 docWriter.generateFirstPage(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
112 docWriter.generateTOC(modules); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
113 docWriter.generateModuleSection(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
114 docWriter.generateListingSection(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
115 docWriter.generateDepGraphSection(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
116 docWriter.generateIndexSection(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
117 docWriter.generateLastPage(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
118 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
119 docFile.close(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
120 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
121 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
122 /** |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
123 * Generates D language definition file. |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
124 */ |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
125 void generateLangDef() { |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
126 auto docFile = new FileOutput(outPath("lstlang0.sty")); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
127 docWriter.setOutput([docFile]); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
128 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
129 docWriter.generateLangDef(); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
130 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
131 docFile.close(); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
132 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
133 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
134 /** |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
135 * Generates "makefile" for processing the .dot and .tex files. |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
136 */ |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
137 void generateMakeFile() { |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
138 auto docFile = new FileOutput(outPath("make.sh")); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
139 docWriter.setOutput([docFile]); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
140 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
141 docWriter.generateMakeFile(); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
142 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
143 docFile.close(); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
144 } |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
145 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
146 /** |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
147 * Generates documentation for modules. |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
148 */ |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
149 void generateModules(char[] modulesFile) { |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
150 auto docFile = new FileOutput(outPath(modulesFile)); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
151 docFile.close(); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
152 } |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
153 |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
154 /** |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
155 * Generates source file listings. |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
156 */ |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
157 void generateListings(char[] listingsFile) { |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
158 auto dlwf = new DefaultListingWriterFactory(this); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
159 auto docFile = new FileOutput(outPath(listingsFile)); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
160 docWriter.setOutput([docFile]); |
454
dbdc9fa5d479
depgraph fixes, better design for multiple doctargets.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
453
diff
changeset
|
161 auto writer = dlwf.createListingWriter(docWriter, DocFormat.LaTeX); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
162 |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
163 /*modules.sort( |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
164 (Module a, Module b){ return icompare(a.moduleFQN, b.moduleFQN); } |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
165 );*/ |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
166 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
167 foreach(mod; modules) { |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
168 auto dstFname = replace(mod.moduleFQN.dup, '.', '_') ~ ".d"; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
169 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
170 auto srcFile = new FileInput(mod.filePath); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
171 auto dstFile = new FileOutput(outPath(dstFname)); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
172 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
173 writer.generateListing(srcFile, dstFile, mod.moduleFQN); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
174 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
175 srcFile.close(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
176 dstFile.close(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
177 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
178 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
179 docFile.close(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
180 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
181 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
182 /** |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
183 * Generates dependency graphs. |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
184 */ |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
185 void generateDependencies(char[] depGraphTexFile, char[] depGraphFile) { |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
186 auto docFile = new FileOutput(outPath(depGraphTexFile)); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
187 docWriter.setOutput([docFile]); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
188 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
189 createDepGraph(depGraphFile); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
190 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
191 docFile.close(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
192 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
193 |
446 | 194 public void generate() { |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
195 auto docFileName = "document.tex"; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
196 auto depGraphTexFile = "dependencies.tex"; |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
197 auto depGraphFile = "depgraph.dot"; |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
198 auto listingFile = "files.tex"; |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
199 auto modulesFile = "modules.tex"; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
200 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
201 parseSources(); |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
202 |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
203 generateDoc(docFileName); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
204 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
205 if (options.listing.enableListings) |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
206 generateListings(listingFile); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
207 |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
208 generateModules(modulesFile); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
209 |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
210 generateDependencies(depGraphTexFile, depGraphFile); |
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
211 |
453
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
212 generateLangDef(); |
4e5b35df3060
Parsing bugfixes, cleaned up imports.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
452
diff
changeset
|
213 generateMakeFile(); |
395
ac9cd48151b6
Added couple of docgen modules.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
diff
changeset
|
214 } |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
215 } |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
216 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
217 void main(char[][] args) { |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
218 Configurator config = new DefaultConfigurator(); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
219 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
220 auto options = config.getConfiguration(); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
221 options.parser.rootPaths = [ args[1] ]; |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
222 options.parser.importPaths = [ args[2] ]; |
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
223 options.outputDir = args[3]; |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
224 |
455
f92505ad18ab
Simple configuration reader, small modifications.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
454
diff
changeset
|
225 auto generator = new LaTeXDocGenerator(*options); |
452
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
226 |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
227 generator.generate(); |
f658ec4a15dd
Simple docgen ui util, some fixes.
Jari-Matti M?kel? <jmjm@iki.fi>
parents:
446
diff
changeset
|
228 } |