class REXML::Parent

Parent 有子节点,并且有用于访问它们的方法。Parent 类除了作为其他一些对象的超类之外,永远不会遇到。

公共类方法

new(parent=nil) 点击切换源代码

构造函数 @param parent 如果提供,将设置为此对象的父对象

调用超类方法 REXML::Child::new
# File rexml-3.4.0/lib/rexml/parent.rb, line 13
def initialize parent=nil
  super(parent)
  @children = []
end

公共实例方法

<<( object )
别名:push
[]( index ) 点击切换源代码

获取给定索引处的子节点 @param index 要获取的子节点的整数索引

# File rexml-3.4.0/lib/rexml/parent.rb, line 57
def []( index )
  @children[index]
end
[]=( *args ) 点击切换源代码

设置索引条目。请参阅 Array.[]= @param index 要设置的元素的索引 @param opt 要设置的对象,或整数长度 @param child 如果 opt 是整数,则这是要设置的子节点 @return 父节点(self)

# File rexml-3.4.0/lib/rexml/parent.rb, line 70
def []=( *args )
  args[-1].parent = self
  @children[*args[0..-2]] = args[-1]
end
add( object ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 18
def add( object )
  object.parent = self
  @children << object
  object
end
别名:push
children()
别名:to_a
deep_clone() 点击切换源代码

深层克隆此对象。这将创建此 Parent 的完整副本,包括所有后代。

# File rexml-3.4.0/lib/rexml/parent.rb, line 148
def deep_clone
  cl = clone()
  each do |child|
    if child.kind_of? Parent
      cl << child.deep_clone
    else
      cl << child.clone
    end
  end
  cl
end
delete( object ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 32
def delete( object )
  found = false
  @children.delete_if {|c| c.equal?(object) and found = true }
  object.parent = nil if found
  found ? object : nil
end
delete_at( index ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 47
def delete_at( index )
  @children.delete_at index
end
delete_if( &block ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 43
def delete_if( &block )
  @children.delete_if(&block)
end
each(&block) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 39
def each(&block)
  @children.each(&block)
end
别名:each_child
each_child(&block)
别名:each
each_index( &block ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 51
def each_index( &block )
  @children.each_index(&block)
end
index( child ) 点击切换源代码

获取给定子节点的索引 @param child 要获取索引的子节点 @return 子节点的索引,如果该对象不是此父节点的子节点,则返回 nil。

# File rexml-3.4.0/lib/rexml/parent.rb, line 123
def index( child )
  count = -1
  @children.find { |i| count += 1 ; i.hash == child.hash }
  count
end
insert_after( child1, child2 ) 点击切换源代码

在另一个子节点之后插入子节点 @param child1 这可以是 xpath 或一个 Element。如果是一个 Element,child2 将插入到父节点的子列表中的 child1 之后。如果是一个 xpath,child2 将插入到第一个匹配 xpath 的子节点之后。 @param child2 要插入的子节点 @return 父节点(self)

# File rexml-3.4.0/lib/rexml/parent.rb, line 102
def insert_after( child1, child2 )
  if child1.kind_of? String
    child1 = XPath.first( self, child1 )
    child1.parent.insert_after child1, child2
  else
    ind = index(child1)+1
    child2.parent.delete(child2) if child2.parent
    @children[ind,0] = child2
    child2.parent = self
  end
  self
end
insert_before( child1, child2 ) 点击切换源代码

在另一个子节点之前插入子节点 @param child1 这可以是 xpath 或一个 Element。如果是一个 Element,child2 将插入到父节点的子列表中的 child1 之前。如果是一个 xpath,child2 将插入到第一个匹配 xpath 的子节点之前。 @param child2 要插入的子节点 @return 父节点(self)

# File rexml-3.4.0/lib/rexml/parent.rb, line 82
def insert_before( child1, child2 )
  if child1.kind_of? String
    child1 = XPath.first( self, child1 )
    child1.parent.insert_before child1, child2
  else
    ind = index(child1)
    child2.parent.delete(child2) if child2.parent
    @children[ind,0] = child2
    child2.parent = self
  end
  self
end
length()
别名:size
parent?() 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 162
def parent?
  true
end
push( object )
别名:<<
别名:add
replace_child( to_replace, replacement ) 点击切换源代码

用另一个子节点替换一个子节点,确保节点列表正确 @param to_replace 要替换的子节点(必须是 Child) @param replacement 要插入到节点列表中的子节点(必须是 Child

# File rexml-3.4.0/lib/rexml/parent.rb, line 140
def replace_child( to_replace, replacement )
  @children.map! {|c| c.equal?( to_replace ) ? replacement : c }
  to_replace.parent = nil
  replacement.parent = self
end
size() 点击切换源代码

@return 此父节点的子节点数量

# File rexml-3.4.0/lib/rexml/parent.rb, line 130
def size
  @children.size
end
别名:length
to_a() 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 115
def to_a
  @children.dup
end
别名:children
unshift( object ) 点击切换源代码
# File rexml-3.4.0/lib/rexml/parent.rb, line 27
def unshift( object )
  object.parent = self
  @children.unshift object
end