Abuelo

Abuelo is a graph theory library that allows you to build a representation of a directed graph with its nodes and edges.

Examples

graph  = Abuelo::Graph.new

node_1 = Abuelo::Node.new('node 1')
node_2 = Abuelo::Node.new('node 2')
node_3 = Abuelo::Node.new('node 3')
edge_1 = Abuelo::Edge.new(node_1, node_2, 42)
edge_2 = Abuelo::Edge.new(node_2, node_3, 23)

graph.add_node(node_1)
     .add_node(node_2)
     .add_node(node_3)
     .add_edge(edge_1)
     .add_edge(edge_2)

graph.nodes                      # => [node_1, node_2, node_3]
graph.has_node?(node_1)          # => true
graph.has_node_with_name?('foo') # => false
graph.edges                      # => [edge_1, edge_2]
graph.has_edge?(edge_1)          # => true
graph.find_edge(node_1, node_2)  # => edge_1
graph.edges_for_node(node_2)     # => [edge_2]

Future

Installation

Abuelo is a gem which you can install with:

gem install abuelo

In Rails 3+, add the following to your Gemfile:

gem 'abuelo'

Credits

Dirk Holzapfel

cachezero.net

bitcrowd.net