Class: Treedent::Node
- Inherits:
-
Object
- Object
- Treedent::Node
- Defined in:
- lib/treedent/node.rb
Instance Attribute Summary collapse
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#successor ⇒ Object
Returns the value of attribute successor.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Instance Method Summary collapse
- #ancestors(&block) ⇒ Object
- #depth ⇒ Object
- #final_sibling? ⇒ Boolean
-
#initialize(value = nil, parent = nil, successor = nil) ⇒ Node
constructor
A new instance of Node.
- #last? ⇒ Boolean
- #orphan? ⇒ Boolean
- #root? ⇒ Boolean
- #successors(&block) ⇒ Object
- #successors_only_descend? ⇒ Boolean
Constructor Details
#initialize(value = nil, parent = nil, successor = nil) ⇒ Node
Returns a new instance of Node.
6 7 8 |
# File 'lib/treedent/node.rb', line 6 def initialize(value = nil, parent = nil, successor = nil) @value, @parent, @successor = value, parent, successor end |
Instance Attribute Details
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
3 4 5 |
# File 'lib/treedent/node.rb', line 3 def parent @parent end |
#successor ⇒ Object
Returns the value of attribute successor.
4 5 6 |
# File 'lib/treedent/node.rb', line 4 def successor @successor end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
3 4 5 |
# File 'lib/treedent/node.rb', line 3 def value @value end |
Instance Method Details
#ancestors(&block) ⇒ Object
34 35 36 |
# File 'lib/treedent/node.rb', line 34 def ancestors(&block) traverse_relationship(:parent, &block) end |
#depth ⇒ Object
10 11 12 |
# File 'lib/treedent/node.rb', line 10 def depth @depth ||= ancestors.count end |
#final_sibling? ⇒ Boolean
14 15 16 |
# File 'lib/treedent/node.rb', line 14 def final_sibling? successor.nil? || successors.all? { |node| node.parent != parent } end |
#last? ⇒ Boolean
26 27 28 |
# File 'lib/treedent/node.rb', line 26 def last? successor.nil? end |
#orphan? ⇒ Boolean
22 23 24 |
# File 'lib/treedent/node.rb', line 22 def orphan? parent.root? end |
#root? ⇒ Boolean
30 31 32 |
# File 'lib/treedent/node.rb', line 30 def root? value.nil? end |
#successors(&block) ⇒ Object
38 39 40 |
# File 'lib/treedent/node.rb', line 38 def successors(&block) traverse_relationship(:successor, &block) end |
#successors_only_descend? ⇒ Boolean
18 19 20 |
# File 'lib/treedent/node.rb', line 18 def successors_only_descend? successors.all? { |node| node.depth >= depth } end |