Class: REXML::Child

Inherits:
Object show all
Includes:
Node
Defined in:
lib/rexml/child.rb

Overview

A Child object is something contained by a parent, and this class contains methods to support that. Most user code will not use this class directly.

Direct Known Subclasses

AttlistDecl, Comment, DTD::AttlistDecl, DTD::ElementDecl, DTD::EntityDecl, DTD::NotationDecl, Declaration, Entity, ExternalEntity, Instruction, NotationDecl, Parent, Text, XMLDecl

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods included from Node

#each_recursive, #find_first_recursive, #indent, #index_in_parent, #next_sibling_node, #parent?, #previous_sibling_node, #to_s

Constructor Details

- (Child) initialize(parent = nil)

Constructor. Any inheritors of this class should call super to make sure this method is called.

parent

if supplied, the parent of this child will be set to the supplied value, and self will be added to the parent



17
18
19
20
21
22
# File 'lib/rexml/child.rb', line 17

def initialize( parent = nil )
  @parent = nil
  # Declare @parent, but don't define it.  The next line sets the
  # parent.
  parent.add( self ) if parent
end

Instance Attribute Details

- (Object) parent

The Parent of this object



10
11
12
# File 'lib/rexml/child.rb', line 10

def parent
  @parent
end

Instance Method Details

- (Object) bytes

This doesn't yet handle encodings



90
91
92
93
94
# File 'lib/rexml/child.rb', line 90

def bytes
  document.encoding

  to_s
end

- (Object) document

Returns

the document this child belongs to, or nil if this child

belongs to no document



84
85
86
87
# File 'lib/rexml/child.rb', line 84

def document
  return parent.document unless parent.nil?
  nil
end

- (Object) next_sibling=(other)

Sets the next sibling of this child. This can be used to insert a child after some other child.

a = Element.new("a")
b = a.add_element("b")
c = Element.new("c")
b.next_sibling = c
# => <a><b/><c/></a>


67
68
69
# File 'lib/rexml/child.rb', line 67

def next_sibling=( other )
  parent.insert_after self, other
end

- (Object) previous_sibling=(other)

Sets the previous sibling of this child. This can be used to insert a child before some other child.

a = Element.new("a")
b = a.add_element("b")
c = Element.new("c")
b.previous_sibling = c
# => <a><b/><c/></a>


78
79
80
# File 'lib/rexml/child.rb', line 78

def previous_sibling=(other)
  parent.insert_before self, other
end

- (Object) remove

Removes this child from the parent.

Returns

self



36
37
38
39
40
41
# File 'lib/rexml/child.rb', line 36

def remove
  unless @parent.nil?
    @parent.delete self
  end
  self
end

- (Object) replace_with(child)

Replaces this object with another object. Basically, calls Parent.replace_child

Returns

self



28
29
30
31
# File 'lib/rexml/child.rb', line 28

def replace_with( child )
  @parent.replace_child( self, child )
  self
end