Sha256: 419307bb54f2e44843973a9517de4bf7ae95bc93ad4be962ce5395e240d1a0f3
Contents?: true
Size: 1.14 KB
Versions: 4
Compression:
Stored size: 1.14 KB
Contents
require 'forwardable' require 'tangle/errors' module Tangle # # An edge in a graph, connecting two vertices # class Edge include Tangle::Mixin::Initialize attr_reader :name # Create a new edge between vertices # # Edge.new(vtx1) => Edge (loop) # Edge.new(vtx1, vtx2) => Edge # # End users should probably use Graph#add_edge instead. # def initialize(vertex1, vertex2 = vertex1, name: nil, **kwargs) @name = name initialize_vertices(vertex1, vertex2) initialize_mixins(**kwargs) end def [](from_vertex) @vertices[from_vertex] end def walk(from_vertex) @vertices.fetch(from_vertex) end def to_s vertex1, vertex2 = @vertices.keys "{#{vertex1}<->#{vertex2}}" end alias inspect to_s def each_vertex(&block) @vertices.each_key(&block) end def include?(vertex) each_vertex.include?(vertex) end def loop? @loop end private def initialize_vertices(vertex1, vertex2 = vertex1) @loop = vertex1 == vertex2 @vertices = { vertex1 => vertex2, vertex2 => vertex1 }.freeze end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
tangle-0.9.0 | lib/tangle/edge.rb |
tangle-0.8.2 | lib/tangle/edge.rb |
tangle-0.8.1 | lib/tangle/edge.rb |
tangle-0.8.0 | lib/tangle/edge.rb |