Class: Forester::TreeNode
- Inherits:
-
Tree::TreeNode
- Object
- Tree::TreeNode
- Forester::TreeNode
show all
- Extended by:
- Forwardable
- Includes:
- Aggregators, Mutators, Views
- Defined in:
- lib/forester/tree_node.rb
Instance Method Summary
collapse
Methods included from Views
#as_nested_hash
Methods included from Mutators
#add_field!, #add_field_to_subtree!, #remove_levels_past!
#nodes_with, #own_and_descendants, #search, #values_by_subtree_of_level, #with_ancestry
Instance Method Details
#contents ⇒ Object
45
46
47
|
# File 'lib/forester/tree_node.rb', line 45
def contents
each_node.map(&:content)
end
|
#each_level ⇒ Object
17
18
19
20
21
22
23
24
25
|
# File 'lib/forester/tree_node.rb', line 17
def each_level
Enumerator.new do |yielder|
level = [self]
begin
yielder << level
level = level.flat_map(&:children)
end until level.empty?
end
end
|
#get(field, default = :raise_error, &block) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/forester/tree_node.rb', line 29
def get(field, default = :raise_error, &block)
if has?(field)
content.get(field)
elsif block_given?
yield self
elsif default != :raise_error
default
else
raise ArgumentError.new("the node \"#{name}\" does not have \"#{field}\"")
end
end
|
#name ⇒ Object
41
42
43
|
# File 'lib/forester/tree_node.rb', line 41
def name
content.get(:name, super)
end
|
#nodes_of_level(l) ⇒ Object
11
12
13
|
# File 'lib/forester/tree_node.rb', line 11
def nodes_of_level(l)
if l.between?(0, max_level) then each_level.take(l + 1).last else [] end
end
|