Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Represents a tagged XML element. Elements are characterized by having children, attributes, and names, and can themselves be children.
Create a new element.
# File rexml/light/node.rb, line 20
def initialize node=nil
@node = node
if node.kind_of? String
node = [ :text, node ]
elsif node.nil?
node = [ :document, nil, nil ]
elsif node[0] == :start_element
node[0] = :element
elsif node[0] == :start_doctype
node[0] = :doctype
elsif node[0] == :start_document
node[0] = :document
end
end
Append a child to this element, optionally under a provided namespace. The namespace argument is ignored if the element argument is an Element object. Otherwise, the element argument is a string, the namespace (if provided) is the namespace the element is created in.
# File rexml/light/node.rb, line 121
def << element
if node_type() == :text
at(-1) << element
else
newnode = Node.new( element )
newnode.parent = self
self.push( newnode )
end
at(-1)
end
# File rexml/light/node.rb, line 97
def =~( path )
XPath.match( self, path )
end
# File rexml/light/node.rb, line 85
def []( reference, ns=nil )
if reference.kind_of? String
pfx = ''
pfx = "#{prefix(ns)}:" if ns
at(3)["#{pfx}#{reference}"]
elsif reference.kind_of? Range
_old_get( Range.new(4+reference.begin, reference.end, reference.exclude_end?) )
else
_old_get( 4+reference )
end
end
Doesn’t handle namespaces yet
# File rexml/light/node.rb, line 102
def []=( reference, ns, value=nil )
if reference.kind_of? String
value = ns unless value
at( 3 )[reference] = value
elsif reference.kind_of? Range
_old_put( Range.new(3+reference.begin, reference.end, reference.exclude_end?), ns )
else
if value
_old_put( 4+reference, ns, value )
else
_old_put( 4+reference, ns )
end
end
end
# File rexml/light/node.rb, line 43
def each( &block )
size.times { |x| yield( at(x+4) ) }
end
# File rexml/light/node.rb, line 146
def has_name?( name, namespace = '' )
at(3) == name and namespace() == namespace
end
# File rexml/light/node.rb, line 61
def local_name
namesplit
@name
end
# File rexml/light/node.rb, line 66
def local_name=( name_str )
_old_put( 1, "#@prefix:#{name_str}" )
end
# File rexml/light/node.rb, line 51
def name=( name_str, ns=nil )
pfx = ''
pfx = "#{prefix(ns)}:" if ns
_old_put(2, "#{pfx}#{name_str}")
end
# File rexml/light/node.rb, line 74
def namespace( prefix=prefix() )
namespace_of( self, prefix )
end
# File rexml/light/node.rb, line 78
def namespace=( namespace )
@prefix = prefix( namespace )
pfx = ''
pfx = "#@prefix:" if @prefix.size > 0
_old_put(1, "#{pfx}#@name")
end
# File rexml/light/node.rb, line 132
def node_type
_old_get(0)
end
# File rexml/light/node.rb, line 57
def parent=( node )
_old_put(1,node)
end
# File rexml/light/node.rb, line 70
def prefix( namespace=nil )
prefix_of( self, namespace )
end
# File rexml/light/node.rb, line 141
def root
context = self
context = context.at(1) while context.at(1)
end
# File rexml/light/node.rb, line 35
def size
if PARENTS.include? @node[0]
@node[-1].size
else
0
end
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.