-require 'ostruct'
-
# A simple graph library
module GraphNjae
# Connect this vertex to another, creating an Edge to do so, and returning
# the Edge
- def connect(other)
- e = Edge.new
+ def connect(other, edge_attributes = {})
+ e = Edge.new edge_attributes
e << self << other
- self.edges << e
- other.edges << e unless self === other
+ # self.edges << e
+ # other.edges << e unless self === other
e
end
e.vertices.drop_while {|v| v != self}[1..-1]}.flatten
end
+ def to_s
+ '<V: ' + self.name + '>'
+ end
+
+ def to_dot(opts = {})
+ if block_given?
+ yield self
+ else
+ dot = self.object_id.to_s
+ if opts.size > 0
+ dot << ' {'
+ dot << opts.keys.map { |k|
+ (k.to_s + ' = "' + self.instance_eval(opts[k].to_s).to_s) + '"'
+ }.join(', ')
+ dot << '}'
+ end
+ dot << ';'
+ end
+ end
+
end
end