Home > basic_tree

basic_tree

Basic_tree is a project mainly written in Ruby, based on the MIT license.

A basic tree structure

= BasicTree

A basic Ruby tree structure with nice syntax.

== Example

fruit = BasicTree.new "Fruit" do add "Apple" do add "Red Delicious" end add "Banana" do add "Manzano" add "Plantain" end add "Orange" end

fruit.object

"Fruit"

banana = fruit.get(2) # get the 2nd fruit banana.object # "Banana"

plantain = banana.get(2) # get the 2nd banana plantain.object # "Plantain"

plantain.parent.object # "Banana"

plantain.path.map(&:object)

["Fruit", "Banana", "Plantain"]

plantain.ancestors.map(&:object) # ancestors is like path except it doesn't include itself

["Fruit", "Banana"]

banana.subtree.map(&:object)

["Banana", "Manzano", "Plantain"]

fruit.descendants.map(&:object) # descendants is like subtree except it doesn't include itself

["Apple", "Red Delicious", "Banana", "Manzano", "Plantain", "Orange"]

banana.siblings.map(&:object)

["Apple", "Orange"]

plantain.root.object # "Fruit"

plantain.level # 3

banana.root? # false

fruit.root? # true

banana.leaf? # false

plantain.leaf? # true

== Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

== Copyright

See LICENSE for details.