<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,14 +1,58 @@
 class MethodTrails
   module DotOutput
 
+    class OutputGenerator
+      def initialize(graph)
+        @graph = graph
+        @o     = []
+      end
+      attr_accessor :graph, :o
+      
+      def output_classes_and_i_methods
+        if classes_and_i_methods = graph[:classes_and_i_methods]
+          o &lt;&lt; &quot;/* Classes and their Instance Methods */&quot;
+          classes_and_i_methods.each_with_index do |hash, i|
+            pairs = hash[&quot;class&quot;].zip(hash[&quot;def&quot;])
+            hash[&quot;class&quot;].uniq.each do |klass|
+              o.concat cluster_start(klass)
+              pairs.find_all { |p| p[0] == klass }.each do |p|
+                o &lt;&lt; dot_indent(1) + %{&quot;#{p[1]}&quot; [color=green];}
+              end
+              o.concat cluster_stop
+            end
+          end
+          o &lt;&lt; nil
+        end
+      end
+
+      def output_i_methods_and_ids
+        if i_methods_and_ids = graph[:i_methods_and_ids]
+          i_methods_and_ids.each do |hash|
+            pairs = hash[&quot;def&quot;].zip(hash[&quot;ident&quot;])
+            pairs.each do |pair|
+              o &lt;&lt; %{&quot;#{pair[0]}&quot; -&gt; &quot;#{pair[1]}&quot;;}
+            end
+          end
+        end
+      end
+      
+      def run
+        output_classes_and_i_methods
+        output_i_methods_and_ids
+      end
+      
+      def to_graph
+        @o
+      end
+      
+      def self.run(graph)
+        new(graph).run.to_graph
+      end
+      
+    end
+
     def dot_file_contents(graph)
-      o = []
-      # output_classes(graph, o)
-      # output_i_methods(graph, o)
-      # output_c_methods(graph, o)
-      output_classes_and_i_methods(graph, o)
-      output_i_methods_and_ids(graph, o)
-      o
+      OutputGenerator.run(graph)
     end
 
     def dot_file_header</diff>
      <filename>lib/method_trails/dot_output.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>51d58e3788f9f08b95262a30146be6fd8b15c9e6</id>
    </parent>
  </parents>
  <author>
    <name>David James</name>
    <email>djwonk@collectiveinsight.net</email>
  </author>
  <url>http://github.com/djwonk/method_trails/commit/c23ac940c2a9e1f67839a6441bea65ca6d7448e5</url>
  <id>c23ac940c2a9e1f67839a6441bea65ca6d7448e5</id>
  <committed-date>2008-06-18T13:04:42-07:00</committed-date>
  <authored-date>2008-06-18T13:04:42-07:00</authored-date>
  <message>Refactoring help from Rein Henrichs</message>
  <tree>27ef09fdac3dffc0c332cce34c6072620816bc68</tree>
  <committer>
    <name>David James</name>
    <email>djwonk@collectiveinsight.net</email>
  </committer>
</commit>
