Mercurial > projects > dil
diff trunk/src/docgen/docgen.d @ 462:b7503e02fbe7
Docgen code for handling public imports.
author | Jari-Matti M?kel? <jmjm@iki.fi> |
---|---|
date | Tue, 30 Oct 2007 20:52:29 +0200 |
parents | 1b5f1ce09f38 |
children | db7e27b5c180 |
line wrap: on
line diff
--- a/trunk/src/docgen/docgen.d Tue Oct 30 18:17:14 2007 +0100 +++ b/trunk/src/docgen/docgen.d Tue Oct 30 20:52:29 2007 +0200 @@ -4,159 +4,16 @@ */ module docgen.docgen; -import docgen.document.generator; - -import docgen.sourcelisting.writers; -import docgen.page.writers; 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; - -import tango.io.Stdout; - - -class HTMLDocGenerator : DefaultDocGenerator!("html") { - this(DocGeneratorOptions options, ParserDg parser) { - super(options, parser); - } - public void generate() { /* TODO */ } -} -class XMLDocGenerator : DefaultDocGenerator!("xml") { - this(DocGeneratorOptions options, ParserDg parser) { - super(options, parser); - } - public void generate() { /* TODO */ } -} -class PlainTextDocGenerator : DefaultDocGenerator!("txt") { - this(DocGeneratorOptions options, ParserDg parser) { - super(options, parser); - } - public void generate() { /* TODO */ } -} - -/** - * Main routine for LaTeX doc generation. - */ -class LaTeXDocGenerator : DefaultCachingDocGenerator!("latex") { - this(DocGeneratorOptions options, ParserDg parser, GraphCache graphcache) { - super(options, parser, graphcache); - } - - /** - * Generates document skeleton. - */ - void generateDoc(char[] docFileName) { - auto docFile = new FileOutput(outPath(docFileName)); - docWriter = pageFactory.createPageWriter( [ docFile ], DocFormat.LaTeX ); - - docWriter.generateFirstPage(); - docWriter.generateTOC(modules); - docWriter.generateModuleSection(); - docWriter.generateListingSection(); - docWriter.generateDepGraphSection(); - docWriter.generateIndexSection(); - docWriter.generateLastPage(); - - docFile.close(); - } - - /** - * Generates D language definition file. - */ - void generateLangDef() { - auto docFile = new FileOutput(outPath("lstlang0.sty")); - docWriter.setOutput([docFile]); - - docWriter.generateLangDef(); - - docFile.close(); - } +import docgen.document.latexgenerator; +import docgen.document.htmlgenerator; +import docgen.document.xmlgenerator; +import docgen.document.plaintextgenerator; - /** - * Generates "makefile" for processing the .dot and .tex files. - */ - void generateMakeFile() { - auto docFile = new FileOutput(outPath("make.sh")); - docWriter.setOutput([docFile]); - - docWriter.generateMakeFile(); - - docFile.close(); - } - - /** - * Generates documentation for modules. - */ - void generateModules(char[] modulesFile) { - auto docFile = new FileOutput(outPath(modulesFile)); - docFile.close(); - } - - /** - * Generates source file listings. - */ - void generateListings(char[] listingsFile) { - auto dlwf = new DefaultListingWriterFactory(this); - auto docFile = new FileOutput(outPath(listingsFile)); - docWriter.setOutput([docFile]); - auto writer = dlwf.createListingWriter(docWriter, DocFormat.LaTeX); - - - foreach(mod; modules) { - auto dstFname = replace(mod.moduleFQN.dup, '.', '_') ~ ".d"; - - auto srcFile = new FileInput(mod.filePath); - auto dstFile = new FileOutput(outPath(dstFname)); - - writer.generateListing(srcFile, dstFile, mod.moduleFQN); - - srcFile.close(); - dstFile.close(); - } - - docFile.close(); - } - - /** - * Generates dependency graphs. - */ - void generateDependencies(char[] depGraphTexFile, char[] depGraphFile) { - auto docFile = new FileOutput(outPath(depGraphTexFile)); - docWriter.setOutput([docFile]); - - createDepGraph(depGraphFile); - - docFile.close(); - } - - public void generate() { - auto docFileName = "document.tex"; - auto depGraphTexFile = "dependencies.tex"; - auto depGraphFile = "depgraph.dot"; - auto listingFile = "files.tex"; - auto modulesFile = "modules.tex"; - - parseSources(); - - generateDoc(docFileName); - - if (options.listing.enableListings) - generateListings(listingFile); - - generateModules(modulesFile); - - generateDependencies(depGraphTexFile, depGraphFile); - - generateLangDef(); - generateMakeFile(); - } -} +import tango.core.Array; +import tango.text.Ascii; +import tango.io.Stdout; void usage() { Stdout( @@ -198,7 +55,7 @@ options.parser.importPaths, options.parser.strRegexps, options.graph.includeUnlocatableModules, - options.graph.depth, + options.parser.depth, (char[] fqn, char[] path, Module m) { if (m is null) { if (fqn in vertices) { @@ -216,9 +73,12 @@ debug Stdout.format("Setting {} = {}.\n", m.moduleFQN, m.filePath); } }, - (Module imported, Module importer) { + (Module imported, Module importer, bool isPublic) { debug Stdout.format("Connecting {} - {}.\n", imported.moduleFQN, importer.moduleFQN); - edges ~= vertices[imported.moduleFQN].addChild(vertices[importer.moduleFQN]); + auto edge = vertices[imported.moduleFQN].addChild(vertices[importer.moduleFQN]); + edge.type = isPublic ? EdgeType.PublicDependency : EdgeType.Dependency; + edge.type = id % 2 ? EdgeType.PublicDependency : EdgeType.Dependency; // FIXME: temporary feature for demonstrating public imports + edges ~= edge; }, modules );