Class Amrita::NodeArray
In: lib/amrita/node.rb
Parent: Object

represents an Array of Node. It is a Node also.

Methods
+    <<    []    apply_to_children    children    clone    delete_if    new    no_child?    size    to_ruby   
Attributes
:array  [R] 
Included modules
Node
Public Class methods
new(*elements)
# 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
Public Instance methods
size()
# File lib/amrita/node.rb, line 679
    def size()
      @array.size()
    end
[](index)
# File lib/amrita/node.rb, line 683
    def [](index)
      @array[index]
    end
no_child?()
# File lib/amrita/node.rb, line 687
    def no_child?
      @array.empty?
    end
clone()
# File lib/amrita/node.rb, line 691
    def clone
      NodeArray.new(self)
    end
children()
# File lib/amrita/node.rb, line 695
    def children
      @array
    end
+(node)
# File lib/amrita/node.rb, line 699
    def +(node)
      ret = clone
      ret << node
      ret
    end
<<(node)
# 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
delete_if(&block)
# 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
to_ruby()
# File lib/amrita/node.rb, line 734
    def to_ruby
      "[ " + @array.collect {|e| e.to_ruby}.join(", ") + " ]"
    end