represents an Array of Node. It is a Node also.
Node
# File lib/amrita/node.rb, line 666
def initialize(*elements)
if elements.size() == 1 and elements[0].kind_of?(NodeArray)
a = elements[0]
@array = a.array.collect { |n| n.clone }
else
@array = elements.collect do |a|
#raise "can't be a parent of me!" if a.id == self.id # no recusive check because it costs too much
to_node(a)
end
end
end
# File lib/amrita/node.rb, line 679
def size()
@array.size()
end
# File lib/amrita/node.rb, line 683
def [](index)
@array[index]
end
# File lib/amrita/node.rb, line 687
def no_child?
@array.empty?
end
# File lib/amrita/node.rb, line 691
def clone
NodeArray.new(self)
end
# File lib/amrita/node.rb, line 695
def children
@array
end
# File lib/amrita/node.rb, line 699
def +(node)
ret = clone
ret << node
ret
end
# File lib/amrita/node.rb, line 705
def <<(node)
raise "can't be a parent of me!" if node == self
@array << to_node(node)
self
end
apply_to_children(&block) {|n| ...}
|
# File lib/amrita/node.rb, line 711
def apply_to_children(&block)
ret =@array.collect do |n|
yield(n)
end
Node::to_node(ret)
end
# File lib/amrita/node.rb, line 718
def delete_if(&block)
array = @array.collect do |x|
x.delete_if(&block)
end.find_all do |x|
x and x != Null
end
case array.size
when 0
Null
when 1
Node::to_node(array[0])
else
Node::to_node(array)
end
end
# File lib/amrita/node.rb, line 734
def to_ruby
"[ " + @array.collect {|e| e.to_ruby}.join(", ") + " ]"
end