Simply a directed pair (source -> target). Most library functions try do omit to instantiate edges. They instead use two vertex parameters for representing edges (see each_edge). If a client wants to store edges explicitly DirecteEdge or UnDirectedEdge instances are returned (i.e. Graph#edges).

[RW] source
[RW] target
Public Class methods

Can be used to create an edge from a two element array.

    # File lib/rgl/base.rb, line 30
30:       def self.[](*a)
31:         new(a[0],a[1])
32:       end

Create a new DirectedEdge with source a and target b.

    # File lib/rgl/base.rb, line 35
35:       def initialize (a,b)
36:         @source, @target = a,b
37:       end
Public Instance methods

Sort support is dispatched to the <=> method of Array

    # File lib/rgl/base.rb, line 63
63:       def <=> e
64:         self.to_a <=> e.to_a
65:       end

Alias for eql?


Edges can be indexed. edge[0] == edge.source, edge[n] == for all n>0. Edges can thus be used as a two element array.

    # File lib/rgl/base.rb, line 53
53:       def [](index); ? source : target; end

Two directed edges (u,v) and (x,y) are equal iff u == x and v == y. eql? is needed when edges are inserted into a Set. eql? is aliased to ==.

This method is also aliased as ==
    # File lib/rgl/base.rb, line 41
41:       def eql?(edge)
42:         source == edge.source and target ==
43:       end

Returns (v,u) if self == (u,v).

    # File lib/rgl/base.rb, line 47
47:       def reverse
48:, source)
49:       end

Returns the array [source,target].

    # File lib/rgl/base.rb, line 60
60:       def to_a; [source,target]; end

DirectedEdge[1,2].to_s == "(1-2)"

    # File lib/rgl/base.rb, line 56
56:       def to_s
57:         "(#{source}-#{target})"
58:       end