class AsciiTree::NodeBuilder

Attributes

relationships[R]

Public Class Methods

build(*args) click to toggle source
# File lib/ascii_tree/node_builder.rb, line 3
def self.build(*args)
  new(*args).build
end
new(relationships) click to toggle source
# File lib/ascii_tree/node_builder.rb, line 7
def initialize(relationships)
  @relationships = relationships
end

Public Instance Methods

build() click to toggle source
# File lib/ascii_tree/node_builder.rb, line 11
def build
  build_for(root_word, nil) if relationships.any?
end

Private Instance Methods

build_for(word, parent) click to toggle source
# File lib/ascii_tree/node_builder.rb, line 27
def build_for(word, parent)
  node = Node.new(
    identity: word.identity,
    value: word.value,
    parent: parent,
    children: []
  )

  children_for(word, node).each do |child|
    node.children << child
  end

  node
end
children_for(word, parent) click to toggle source
# File lib/ascii_tree/node_builder.rb, line 42
def children_for(word, parent)
  child_relationships = relationships.select do |r|
    r.parent_word == word
  end

  child_relationships.map do |r|
    build_for(r.child_word, parent)
  end
end
root_relationship() click to toggle source
# File lib/ascii_tree/node_builder.rb, line 23
def root_relationship
  relationships.detect { |r| r.parent_word.nil? }
end
root_word() click to toggle source
# File lib/ascii_tree/node_builder.rb, line 19
def root_word
  root_relationship.child_word
end