Class: REXML::Parent (Ruby 2.7.5)
Description: Class : REXML::Parent - Ruby 2.7.5

### Home Classes Methods

### In Files

- rexml/parent.rb

### Parent

REXML::Child

### Methods

- ::new
- #<<
- #[]
- #[]=
- #add
- #children
- #deep_clone
- #delete
- #delete_at
- #delete_if
- #each
- #each_child
- #each_index
- #index
- #insert_after
- #insert_before
- #length
- #parent?
- #push
- #replace_child
- #size
- #to_a
- #unshift

### Included Modules

- Enumerable

### Class/Module Index

Quicksearch

- Array
- Float
- Integer
- Object
- REXML
- REXML::AttlistDecl
- REXML::Attribute
- REXML::Attributes
- REXML::CData
- REXML::Child
- REXML::Comment
- REXML::DTD
- REXML::DTD::AttlistDecl
- REXML::DTD::ElementDecl
- REXML::DTD::EntityDecl
- REXML::DTD::NotationDecl
- REXML::DTD::Parser
- REXML::Declaration
- REXML::DocType
- REXML::Document
- REXML::Element
- REXML::ElementDecl
- REXML::Elements
- REXML::Encoding
- REXML::Entity
- REXML::EntityConst
- REXML::ExternalEntity
- REXML::Formatters
- REXML::Formatters::Default
- REXML::Formatters::Pretty
- REXML::Formatters::Transitive
- REXML::Functions
- REXML::IOSource
- REXML::Instruction
- REXML::Light
- REXML::Light::Node
- REXML::Namespace
- REXML::Node
- REXML::NotationDecl
- REXML::Output
- REXML::Parent
- REXML::ParseException
- REXML::Parsers
- REXML::Parsers::BaseParser
- REXML::Parsers::LightParser
- REXML::Parsers::PullEvent
- REXML::Parsers::PullParser
- REXML::Parsers::SAX2Parser
- REXML::Parsers::StreamParser
- REXML::Parsers::TreeParser
- REXML::Parsers::UltraLightParser
- REXML::Parsers::XPathParser
- REXML::QuickPath
- REXML::ReferenceWriter
- REXML::SAX2Listener
- REXML::Security
- REXML::Source
- REXML::SourceFactory
- REXML::StreamListener
- REXML::Text
- REXML::UndefinedNamespaceException
- REXML::Validation
- REXML::Validation::Choice
- REXML::Validation::Event
- REXML::Validation::Interleave
- REXML::Validation::OneOrMore
- REXML::Validation::Optional
- REXML::Validation::Ref
- REXML::Validation::RelaxNG
- REXML::Validation::Sequence
- REXML::Validation::State
- REXML::Validation::ValidationException
- REXML::Validation::Validator
- REXML::Validation::ZeroOrMore
- REXML::XMLDecl
- REXML::XMLTokens
- REXML::XPath
- REXML::XPathNode
- REXML::XPathParser
- Symbol

No matching classes.

# REXML::Parent

A parent has children, and has methods for accessing them. The `Parent` class is never encountered except as the superclass for some other object.

### Public Class Methods

new(parent=nil) click to toggle source

Constructor @param parent if supplied, will be set as the parent of this object

                   # File rexml/parent.rb, line 13
    def initialize parent=nil
      super(parent)
      @children = []
    end

### Public Instance Methods

<<( object ) click to toggle source
Alias for: push
[]( index ) click to toggle source

Fetches a child at a given index @param index the `Integer` index of the child to fetch

                   # File rexml/parent.rb, line 57
    def []( index )
      @children[index]
    end

[]=( *args ) click to toggle source

Set an index entry. See Array.[]= @param index the index of the element to set @param opt either the object to set, or an `Integer` length @param child if opt is an `Integer`, this is the child to set @return the parent (self)

                   # File rexml/parent.rb, line 70
    def []=( *args )
      args[-1].parent = self
      @children[*args[0..-2]] = args[-1]
    end

add( object ) click to toggle source

                   # File rexml/parent.rb, line 18
    def add( object )
      object.parent = self
      @children << object
      object
    end

Also aliased as: push
children() click to toggle source
Alias for: to_a
deep_clone() click to toggle source

Deeply clones this object. This creates a complete duplicate of this `Parent`, including all descendants.

                   # File 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 ) click to toggle source

                   # File 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 ) click to toggle source

                   # File rexml/parent.rb, line 47
    def delete_at( index )
      @children.delete_at index
    end

delete_if( &block ) click to toggle source

                   # File rexml/parent.rb, line 43
    def delete_if( &block )
      @children.delete_if(&block)
    end

each(&block) click to toggle source

                   # File rexml/parent.rb, line 39
    def each(&block)
      @children.each(&block)
    end

Also aliased as: each_child
each_child(&block) click to toggle source
Alias for: each
each_index( &block ) click to toggle source

                   # File rexml/parent.rb, line 51
    def each_index( &block )
      @children.each_index(&block)
    end

index( child ) click to toggle source

Fetches the index of a given child @param child the child to get the index of @return the index of the child, or nil if the object is not a child of this parent.

                   # File 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 ) click to toggle source

Inserts an child after another child @param child1 this is either an xpath or an `Element`. If an `Element`, 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. @param child2 the child to insert @return the parent (self)

                   # File 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 ) click to toggle source

Inserts an child before another child @param child1 this is either an xpath or an `Element`. If an `Element`, 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. @param child2 the child to insert @return the parent (self)

                   # File 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() click to toggle source
Alias for: size
parent?() click to toggle source

                   # File rexml/parent.rb, line 162
    def parent?
      true
    end

push( object ) click to toggle source
Also aliased as: <<
Alias for: add
replace_child( to_replace, replacement ) click to toggle source

Replaces one child with another, making sure the nodelist is correct @param to_replace the child to replace (must be a `Child`) @param replacement the child to insert into the nodelist (must be a `Child`)

                   # File 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() click to toggle source

@return the number of children of this parent

                   # File rexml/parent.rb, line 130
    def size
      @children.size
    end

Also aliased as: length
to_a() click to toggle source

                   # File rexml/parent.rb, line 115
    def to_a
      @children.dup
    end

Also aliased as: children
unshift( object ) click to toggle source

                   # File rexml/parent.rb, line 27
    def unshift( object )
      object.parent = self
      @children.unshift object
    end