Class: Tree::TreeNode

Inherits
Object show all
Defined in
lib/kyanite/tree.rb

Rubytree Additions

Kyanite definitions

TreeNode

Kyanite tests and examples

TestKyaniteTree

Base class

rubytree

Usage

require 'kyanite/tree'

Additions for rubytree (collapse)

Instance Method Details

- (Array) all_child_keys

Returns an array of all child keys. The whole tree is searched.

Returns:



83
84
85
86
87
88
89
90
91
# File 'lib/kyanite/tree.rb', line 83

def all_child_keys
  result = @children_hash.keys || []
    children do |c| 
    #puts "durchsuche #{c}"
      next if c.children_hash.empty?
      result += c.all_child_keys
    end      
  result
end

- (Object) find(node_name)

As opposed to [] the entire tree is searched. Returns the first hit.



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/kyanite/tree.rb', line 64

def find( node_name )
  return self               if self.name == node_name
  result = self[node_name]
  return result if result
  children do |c| 
    next if c.children.empty?
    #puts "durchsuche #{c.name}"
    result = c.find(node_name)
    return result if result
  end
  nil
end

This method returns an undefined value.

now it works



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/kyanite/tree.rb', line 39

def print_tree(level = 0, breite = 8)

  if is_root? 
    print "*"
    
  elsif level == 0
    print 'X'
  
  else
    print "|" unless parent.is_last_sibling?
    print(" " * (level - 1 ) * breite)
    print(is_last_sibling? ? "+" : "|")
    print "---"
    print(has_children? ? "+" : ">")
  end

  puts " #{name}"

  children { |child| child.print_tree(level + 1)}
  nil
end

- (String) to_s

now handles symbols in the tree as well

Returns:



27
28
29
30
31
32
33
34
# File 'lib/kyanite/tree.rb', line 27

def to_s
  ":#{@name}"
  # "Node Name: #{@name}" +
    # " Content: #{@content || '<Empty>'}" + 
    # " Parent: #{(isRoot?()  ? '<None>' : @parent.name)}" + 
    # " Children: #{@children.length}" +
    # " Total Nodes: #{size()}"
end