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
     );