module Tangle::BaseGraphProtected

Protected methods of BaseGraph

Protected Instance Methods

copy_vertices_and_edges(from) click to toggle source
# File lib/tangle/base_graph_protected.rb, line 10
def copy_vertices_and_edges(from)
  @vertices = from.instance_variable_get(:@vertices).dup
  @vertices_by_name = from.instance_variable_get(:@vertices_by_name).dup
  @edges = from.instance_variable_get(:@edges).dup
end
delete_edge(edge) click to toggle source
# File lib/tangle/base_graph_protected.rb, line 45
def delete_edge(edge)
  edge.each_vertex { |vertex| @vertices.fetch(vertex).delete(edge) }
  @edges.delete(edge)
end
delete_vertex(vertex) click to toggle source
# File lib/tangle/base_graph_protected.rb, line 30
def delete_vertex(vertex)
  @vertices[vertex].each do |edge|
    delete_edge(edge) if edge.include?(vertex)
  end
  @vertices.delete(vertex)
  @vertices_by_name.delete_if { |_, vtx| vtx.eql?(vertex) }
end
insert_edge(edge) click to toggle source

Insert a prepared edge into the graph

# File lib/tangle/base_graph_protected.rb, line 40
def insert_edge(edge)
  @edges << edge
  edge.each_vertex { |vertex| @vertices.fetch(vertex) << edge }
end
insert_vertex(vertex, name = nil) click to toggle source
# File lib/tangle/base_graph_protected.rb, line 25
def insert_vertex(vertex, name = nil)
  @vertices[vertex] = Set[]
  @vertices_by_name[name] = vertex unless name.nil?
end
select_vertices!(selected = nil) { |vertex| ... } click to toggle source
# File lib/tangle/base_graph_protected.rb, line 16
def select_vertices!(selected = nil)
  vertices.each do |vertex|
    delete_vertex(vertex) if block_given? && !yield(vertex)
    next if selected.nil?

    delete_vertex(vertex) unless selected.any? { |vtx| vtx.eql?(vertex) }
  end
end