Skip to content

Instantly share code, notes, and snippets.

@melborne
Created October 2, 2008 00:26
Show Gist options
  • Save melborne/14242 to your computer and use it in GitHub Desktop.
Save melborne/14242 to your computer and use it in GitHub Desktop.
digraph G {
rankdir=TB
node [shape=plaintext, fontsize=16]
A -> B -> C -> D -> E [style=dotted, arrowhead=none]
"Ruby1.9 Class Relation Map" [shape=plaintext, fontcolor=darkgreen, style=filled, fontsize=20]
node [shape=Mrecord, height=1.2, width=2, style=bold];
class [label = "{<0> Class\nclass |<1> Instance methods}"];
basic [label="{<0> BasicObject\nclass |<1> Instance methods}"]
object [label = "{<0> Object\nclass |<1> Instance methods}"];
module [label = "{<0> Module\nclass |<1> Instance methods}"];
general [label = "{<0> General\nclass |<1> Instance methods}"];
kernel [label = "{<0> Kernel\nmodule |<1> Instance methods}"];
mod_a [label = "{<0> module A |<1> Instance methods}"];
mod_b [label = "{<0> module B |<1> Instance methods}"];
"Green line: Object instanciation\nRed line: Class inheritance\nPurple line: Module Mix-in" [shape=plaintext, style=normal, fontsize=16, fontcolor=maroon];
node [shape=Mrecord, height=0.6, width=1.4, style=bold]
ins_a [label = "Instance a\nof\nclass A"];
ins_b [label = "Instance b\nof\nclass A"];
ins_c [label = "Instance c\nof\nclass A"];
ins_o [label = "Instance o\nof\nclass Object"];
node [shape=record, height=.5, width=1, style=normal, label = "Class\nmethods", fontsize=16];
single_class;
single_basic;
single_object;
single_module;
single_general;
node [label="Module\nmethods", style=normal, fontsize=16]
single_kernel;
single_mod_a;
single_mod_b;
node [label="Singleton\nmethods", style=normal, fontsize=16]
single_ins_o;
single_ins_a;
single_ins_b;
single_ins_c;
edge [color=darkgreen, style=normal]
class -> basic;
class -> object;
class -> module;
class -> general;
object -> ins_o;
module -> kernel;
module -> mod_a;
module -> mod_b;
general -> ins_a;
general -> ins_b;
general -> ins_c;
edge [color=black, style=normal]
single_class -> class;
single_basic -> basic
single_object -> object
single_module -> module
single_general -> general
single_kernel -> kernel
single_mod_a -> mod_a
single_mod_b -> mod_b
single_ins_o -> ins_o
single_ins_a -> ins_a
single_ins_b -> ins_b
single_ins_c -> ins_c
basic -> object -> module -> class [style=normal, color=maroon]
/* object -> general [style=normal, color=maroon] */
kernel -> object [style=normal, color=purple]
{rank=same; A; class; module}
{rank=same; B; single_basic; single_object;}
{rank=same; C; basic; object }
{rank=same; D; general; kernel; mod_a; mod_b;}
{rank=same; E; ins_o; ins_a; ins_b; ins_c}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment