Mercurial > projects > dil
diff trunk/src/docgen/graphutils/dotwriter.d @ 459:1b5f1ce09f38
Fix to the image cache, cleaned stuff.
author | Jari-Matti M?kel? <jmjm@iki.fi> |
---|---|
date | Tue, 30 Oct 2007 16:58:17 +0200 |
parents | 33a4cb255fcc |
children | b7503e02fbe7 |
line wrap: on
line diff
--- a/trunk/src/docgen/graphutils/dotwriter.d Tue Oct 30 15:44:05 2007 +0200 +++ b/trunk/src/docgen/graphutils/dotwriter.d Tue Oct 30 16:58:17 2007 +0200 @@ -9,6 +9,7 @@ import tango.text.convert.Layout : Layout; import tango.io.FilePath; import tango.text.Util; +import tango.text.convert.Sprint; debug import tango.io.Stdout; /** @@ -19,8 +20,9 @@ super(factory, writer); } - void generateDepImageFile(Vertex[] vertices, Edge[] edges, OutputStream imageFile) { - auto image = new Print!(char)(new Layout!(char), imageFile); + char[] generateDepImageFile(Vertex[] vertices, Edge[] edges) { + char[] image; + auto sprint = new Sprint!(char); Vertex[][char[]] verticesByPckgName; if (factory.options.graph.groupByFullPackageName || @@ -39,7 +41,7 @@ factory.options.graph.highlightCyclicEdges) findCycles(vertices, edges); - image("Digraph ModuleDependencies {\n"); + image ~= "Digraph ModuleDependencies {\n"; foreach (module_; vertices) { auto nodeName = @@ -47,7 +49,7 @@ module_.name.split(".")[$-1] : module_.name; - image.format( + image ~= sprint.format( ` n{0} [label="{1}"{2}];`\n, module_.id, nodeName, @@ -62,7 +64,7 @@ } foreach (edge; edges) - image.format( + image ~= sprint.format( ` n{0} -> n{1}{2};`\n, edge.outgoing.id, edge.incoming.id, @@ -79,20 +81,20 @@ char[] pkg; foreach(part; name) { pkg ~= part ~ "."; - image.format( + image ~= sprint.format( `subgraph "cluster_{0}" {{`\n` label="{0}"`\n, pkg[0..$-1], pkg[0..$-1] ); } for (int i=0; i< name.length; i++) { - image("}\n"); + image ~= "}\n"; } } } } foreach (packageName, vertices; verticesByPckgName) { - image.format( + image ~= sprint.format( ` subgraph "cluster_{0}" {{`\n` label="{0}";color=` ~ factory.options.graph.clusterColor ~ `;`\n` `, packageName, @@ -100,11 +102,13 @@ ); foreach (module_; vertices) - image.format(`n{0};`, module_.id); - image("\n }\n"); + image ~= sprint.format(`n{0};`, module_.id); + image ~= "\n }\n"; } - image("}"); + image ~= "}"; + + return image; } void generateImageTag(OutputStream imageFile) { @@ -119,7 +123,10 @@ protected void generateDepGraph(Vertex[] vertices, Edge[] edges, OutputStream imageFile) { generateImageTag(imageFile); - generateDepImageFile(vertices, edges, imageFile); + + auto image = generateDepImageFile(vertices, edges); + auto printer = new Print!(char)(new Layout!(char), imageFile); + printer(image); } } @@ -128,21 +135,22 @@ this(CachingGraphWriterFactory factory, PageWriter writer) { super(factory, writer); + this.factory = factory; } protected void generateDepGraph(Vertex[] vertices, Edge[] edges, OutputStream imageFile) { generateImageTag(imageFile); - auto cached = factory.getCachedGraph(vertices, edges, GraphFormat.Dot); + auto cached = factory.graphCache.getCachedGraph(vertices, edges, GraphFormat.Dot); + auto printer = new Print!(char)(new Layout!(char), imageFile); + if (cached) { - auto image = new Print!(char)(new Layout!(char), imageFile); - - if (cached) { - debug Stdout("Image cache hit.\n"); - image(cached); - } else - generateDepImageFile(vertices, edges, imageFile); + printer(cached); + } else { + auto image = generateDepImageFile(vertices, edges); + factory.graphCache.setCachedGraph(vertices, edges, GraphFormat.Dot, image); + printer(image); } } }