Mercurial > projects > dil
diff 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 |
line wrap: on
line diff
--- a/trunk/src/docgen/docgen.d Fri Oct 26 01:04:09 2007 +0200 +++ b/trunk/src/docgen/docgen.d Mon Oct 29 21:27:02 2007 +0200 @@ -9,87 +9,92 @@ import docgen.graphutils.writers; import docgen.misc.misc; import docgen.misc.parser; +import docgen.config.configurator; import tango.core.Array; import tango.io.stream.FileStream; import tango.text.Ascii; import tango.text.Util : replace; +import tango.io.FilePath; debug import tango.io.Stdout; -abstract class DefaultDocGenerator : DocGenerator { - DocGeneratorOptions m_options; - DocumentWriter docWriter; - GraphWriterFactory graphFactory; - - Module[] modules; - Edge[] edges; - Vertex[char[]] vertices; +template DefaultDocGenerator(char[] genDir) { + abstract class DefaultDocGenerator : DocGenerator { + DocGeneratorOptions m_options; + DocumentWriter docWriter; + GraphWriterFactory graphFactory; + + Module[] modules; + Edge[] edges; + Vertex[char[]] vertices; - this(DocGeneratorOptions options) { - m_options = options; - parseSources(); - graphFactory = new DefaultGraphWriterFactory(this); - } + this(DocGeneratorOptions options) { + m_options = options; + graphFactory = new DefaultGraphWriterFactory(this); + + // create output dir + (new FilePath(options.outputDir ~ "/" ~ genDir)).create(); + } - // TODO: constructor for situations where parsing has happened elsewhere + // TODO: constructor for situations where parsing has happened elsewhere - char[] outPath(char[] file) { - return options.outputDir ~ "/" ~ file; - } + char[] outPath(char[] file) { + return options.outputDir ~ "/" ~ genDir ~ "/" ~ file; + } - void parseSources() { - int id = 1; + void parseSources() { + int id = 1; - Parser.loadModules( - options.parser.rootPaths, - options.parser.importPaths, - options.parser.strRegexps, - options.graph.includeUnlocatableModules, - options.graph.depth, - (char[] fqn, char[] path, Module m) { - if (m is null) { - if (fqn in vertices) { - debug Stdout.format("{} already set.\n", fqn); - return; + Parser.loadModules( + options.parser.rootPaths, + options.parser.importPaths, + options.parser.strRegexps, + options.graph.includeUnlocatableModules, + options.graph.depth, + (char[] fqn, char[] path, Module m) { + if (m is null) { + if (fqn in vertices) { + debug Stdout.format("{} already set.\n", fqn); + return; - } - auto vertex = new Vertex(fqn, path, id++); - vertex.type = VertexType.UnlocatableModule; - vertices[fqn] = vertex; - debug Stdout.format("Setting {} = {}.\n", fqn, path); + } + auto vertex = new Vertex(fqn, path, id++); + vertex.type = VertexType.UnlocatableModule; + vertices[fqn] = vertex; + debug Stdout.format("Setting {} = {}.\n", fqn, path); - } else { - vertices[m.moduleFQN] = new Vertex(m.moduleFQN, m.filePath, id++); - debug Stdout.format("Setting {} = {}.\n", m.moduleFQN, m.filePath); - } - }, - (Module imported, Module importer) { - debug Stdout.format("Connecting {} - {}.\n", imported.moduleFQN, importer.moduleFQN); - edges ~= vertices[imported.moduleFQN].addChild(vertices[importer.moduleFQN]); - }, - modules - ); - } + } else { + vertices[m.moduleFQN] = new Vertex(m.moduleFQN, m.filePath, id++); + debug Stdout.format("Setting {} = {}.\n", m.moduleFQN, m.filePath); + } + }, + (Module imported, Module importer) { + debug Stdout.format("Connecting {} - {}.\n", imported.moduleFQN, importer.moduleFQN); + edges ~= vertices[imported.moduleFQN].addChild(vertices[importer.moduleFQN]); + }, + modules + ); + } - void createDepGraph(char[] depGraphFile) { - auto imgFile = new FileOutput(outPath(depGraphFile)); + void createDepGraph(char[] depGraphFile) { + auto imgFile = new FileOutput(outPath(depGraphFile)); - auto writer = graphFactory.createGraphWriter( docWriter, GraphFormat.Dot ); + auto writer = graphFactory.createGraphWriter( docWriter, GraphFormat.Dot ); - writer.generateDepGraph(vertices.values, edges, imgFile); + writer.generateDepGraph(vertices.values, edges, imgFile); - imgFile.close(); - } + imgFile.close(); + } - public DocGeneratorOptions *options() { - return &m_options; - } + public DocGeneratorOptions *options() { + return &m_options; + } } - +} /** * Main routine for LaTeX doc generation. */ -class LaTeXDocGenerator : DefaultDocGenerator { +class LaTeXDocGenerator : DefaultDocGenerator!("latex") { this(DocGeneratorOptions options) { super(options); } @@ -190,13 +195,15 @@ auto docFileName = "document.tex"; auto depGraphTexFile = "dependencies.tex"; auto depGraphFile = "depgraph.dot"; - auto listingsFile = "files.tex"; + auto listingFile = "files.tex"; auto modulesFile = "modules.tex"; + parseSources(); + generateDoc(docFileName); - if (options.listings.enableListings) - generateListings(listingsFile); + if (options.listing.enableListings) + generateListings(listingFile); generateModules(modulesFile); @@ -208,40 +215,14 @@ } void main(char[][] args) { - DocGeneratorOptions options; - - options.graph.imageFormat = ImageFormat.PDF; - options.graph.depth = -1; - options.graph.nodeColor = "tomato"; - options.graph.cyclicNodeColor = "red"; - options.graph.unlocatableNodeColor = "gray"; - options.graph.clusterColor = "blue"; - options.graph.includeUnlocatableModules = false; - options.graph.highlightCyclicEdges = true; - options.graph.highlightCyclicVertices = true; - options.graph.groupByPackageNames = true; - options.graph.groupByFullPackageName = false; - - options.listings.literateStyle = true; - options.listings.enableListings = true; + Configurator config = new DefaultConfigurator(); - options.templates.title = "Test project"; - options.templates.versionString = "1.0"; - options.templates.copyright = "(C) Me!"; - options.templates.paperSize = "a4paper"; - options.templates.shortFileNames = false; - options.templates.templateStyle = "default"; - - options.parser.importPaths = [ args[2] ]; + auto options = config.getConfiguration(); options.parser.rootPaths = [ args[1] ]; - options.parser.strRegexps = null; + options.parser.importPaths = [ args[2] ]; + options.outputDir = args[3]; - options.outputFormats = [ DocFormat.LaTeX ]; - options.parser.commentFormat = CommentFormat.Doxygen; - options.outputDir = args[3]; - - - auto generator = new LaTeXDocGenerator(options); + auto generator = new LaTeXDocGenerator(*options); generator.generate(); }