Class: REXML::Parent
- Includes:
- Enumerable
- Defined in:
- lib/rexml/parent.rb
Overview
A parent has children, and has methods for accessing them. The Parent class is never encountered except as the superclass for some other object.
Instance Attribute Summary
Attributes inherited from Child
Instance Method Summary collapse
- 
  
    
      #[](index)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Fetches a child at a given index. 
- 
  
    
      #[]=(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Set an index entry. 
- #add(object) ⇒ Object (also: #push)
- 
  
    
      #deep_clone  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Deeply clones this object. 
- #delete(object) ⇒ Object
- #delete_at(index) ⇒ Object
- #delete_if(&block) ⇒ Object
- #each(&block) ⇒ Object (also: #each_child)
- #each_index(&block) ⇒ Object
- 
  
    
      #index(child)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Fetches the index of a given child of this parent. 
- 
  
    
      #initialize(parent = nil)  ⇒ Parent 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Constructor. 
- 
  
    
      #insert_after(child1, child2)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Inserts an child after another child child2 will be inserted after child1 in the child list of the parent. 
- 
  
    
      #insert_before(child1, child2)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Inserts an child before another child child2 will be inserted before child1 in the child list of the parent. 
- #parent? ⇒ Boolean
- 
  
    
      #replace_child(to_replace, replacement)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Replaces one child with another, making sure the nodelist is correct Child). 
- 
  
    
      #size  ⇒ Object 
    
    
      (also: #length)
    
  
  
  
  
  
  
  
  
  
    The number of children of this parent. 
- #to_a ⇒ Object (also: #children)
- #unshift(object) ⇒ Object
Methods inherited from Child
#bytes, #document, #next_sibling=, #previous_sibling=, #remove, #replace_with
Methods included from Node
#each_recursive, #find_first_recursive, #indent, #index_in_parent, #next_sibling_node, #previous_sibling_node, #to_s
Constructor Details
#initialize(parent = nil) ⇒ Parent
Constructor
| 13 14 15 16 | # File 'lib/rexml/parent.rb', line 13 def initialize parent=nil super(parent) @children = [] end | 
Instance Method Details
#[](index) ⇒ Object
Fetches a child at a given index
| 57 58 59 | # File 'lib/rexml/parent.rb', line 57 def []( index ) @children[index] end | 
#[]=(*args) ⇒ Object
Set an index entry. See Array.[]=
| 70 71 72 73 | # File 'lib/rexml/parent.rb', line 70 def []=( *args ) args[-1].parent = self @children[*args[0..-2]] = args[-1] end | 
#add(object) ⇒ Object Also known as: push
| 18 19 20 21 22 | # File 'lib/rexml/parent.rb', line 18 def add( object ) object.parent = self @children << object object end | 
#deep_clone ⇒ Object
Deeply clones this object. This creates a complete duplicate of this Parent, including all descendants.
| 148 149 150 151 152 153 154 155 156 157 158 | # File '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) ⇒ Object
| 32 33 34 35 36 37 | # File '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) ⇒ Object
| 47 48 49 | # File 'lib/rexml/parent.rb', line 47 def delete_at( index ) @children.delete_at index end | 
#delete_if(&block) ⇒ Object
| 43 44 45 | # File 'lib/rexml/parent.rb', line 43 def delete_if( &block ) @children.delete_if(&block) end | 
#each(&block) ⇒ Object Also known as: each_child
| 39 40 41 | # File 'lib/rexml/parent.rb', line 39 def each(&block) @children.each(&block) end | 
#each_index(&block) ⇒ Object
| 51 52 53 | # File 'lib/rexml/parent.rb', line 51 def each_index( &block ) @children.each_index(&block) end | 
#index(child) ⇒ Object
Fetches the index of a given child of this parent.
| 123 124 125 126 127 | # File '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) ⇒ Object
Inserts an child after another child child2 will be inserted after child1 in the child list of the parent. If an xpath, child2 will be inserted after the first child to match the xpath.
| 102 103 104 105 106 107 108 109 110 111 112 113 | # File '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) ⇒ Object
Inserts an child before another child child2 will be inserted before child1 in the child list of the parent. If an xpath, child2 will be inserted before the first child to match the xpath.
| 82 83 84 85 86 87 88 89 90 91 92 93 | # File '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 | 
#parent? ⇒ Boolean
| 162 163 164 | # File 'lib/rexml/parent.rb', line 162 def parent? true end | 
#replace_child(to_replace, replacement) ⇒ Object
Replaces one child with another, making sure the nodelist is correct Child)
| 140 141 142 143 144 | # File '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 ⇒ Object Also known as: length
| 130 131 132 | # File 'lib/rexml/parent.rb', line 130 def size @children.size end | 
#to_a ⇒ Object Also known as: children
| 115 116 117 | # File 'lib/rexml/parent.rb', line 115 def to_a @children.dup end | 
#unshift(object) ⇒ Object
| 27 28 29 30 | # File 'lib/rexml/parent.rb', line 27 def unshift( object ) object.parent = self @children.unshift object end |