lib/redwood/node.rb in redwood-0.0.1 vs lib/redwood/node.rb in redwood-0.1.0
- old
+ new
@@ -1,22 +1,34 @@
+# A basic representation of a Redwood tree.
+
module Redwood
class Node
include Redwood
attr_reader :name
+ attr_accessor :value
def initialize(name=nil, parent=nil)
@name = name
@parent = parent
end
# Creates a child, adds it to children, and returns the child
def add_child(name)
child = self.class.new(name, self)
+ yield child if block_given?
children << child
child
end
+ # Add a node to this nodes children, and return the child
+ def <<(child)
+ child.instance_variable_set(:@parent, self)
+ children << child
+ child
+ end
+
+ # Lookup a child node by its name
def [](key)
selected_child = children.select {|child| child.name == key }
selected_child.size.eql?(1) ? selected_child.first : selected_child
end
\ No newline at end of file