Trivet
Trivet is a generic class for organizing a hierarchy.
Basic usage
1. food = Trivet::Node.new('food')
2.
3. food.node('spices') do |spices|
4. spices.node 'paprika'
5.
6. spices.node('pepper') do |pepper|
7. pepper.node 'java'
8. pepper.node 'matico'
9. pepper.node 'cubeb'
10. end
11. end
12.
13. food.node('fruit') do |fruit|
14. fruit.node('red') do |red|
15. red.node 'cherry'
16. red.node 'apple'
17. end
18. end
19.
20. puts food.to_tree
Line #start# creates a Trivet::Node object and assigns it the id "food".
Lines #spices# to #fruit-end# use the node() method to create child nodes.
Line #end# uses the to_tree() method to display the tree as text, which
looks like this:
food
spices
paprika
pepper
java
matico
cubeb
fruit
red
cherry
apple
The tree can include non Trivet::Node objects.
food = Trivet::Node.new('food')
food.node('spices') do |spices|
spices.node('paprika') do |paprika|
paprika.children.push 'By from Fred'
end
end
See documentation for Trivet::Node, Trivet::Document, and Trivet::ChildSet
for more documentation.
Install
gem install codeblock
Name
The name "Trivet" doesn't have any particular significance. My friend has a cat named "Trivet". Meow.
Author
Mike O'Sullivan [email protected]
History
| version | date | notes |
|---|---|---|
| 1.0 | June 18, 2020 | Initial upload. |
| 1.1 | June 22, 2020 | Consolidated can_have_children? and can_have_child? into allow_child?. |
| 1.2 | January 3, 2021 | Added several methods to Trivet::Node: next_sibling, previous_sibling, have_child?, and move_child. |