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