class XMLBuilder::PathParser::Element

Attributes

index[R]
name[R]

Public Class Methods

new(name, index) click to toggle source
# File lib/ec2/amitools/xmlbuilder.rb, line 161
def initialize(name, index)
  @name = name
  @index = index
end

Public Instance Methods

assign_visit(rexml_node, value) click to toggle source
# File lib/ec2/amitools/xmlbuilder.rb, line 180
def assign_visit(rexml_node, value)
  if value.is_a?(String)
    rexml_node.text = value
  elsif value.is_a?(REXML::Element)
    value.name = rexml_node.name
    raise "Node #{rexml_node.name} does not have a parent node" if rexml_node.parent.nil?
    rexml_node.parent.replace_child(rexml_node, value)
  else
    raise 'Can only assign a String or a REXML::Element to an element'
  end
end
retrieve_visit(rexml_node) click to toggle source
# File lib/ec2/amitools/xmlbuilder.rb, line 192
def retrieve_visit(rexml_node)
  rexml_node
end
walk_visit(rexml_node) click to toggle source

Move one element down in the dom

# File lib/ec2/amitools/xmlbuilder.rb, line 167
def walk_visit(rexml_node)
  elements = rexml_node.get_elements(name)
  raise "Invalid index #{index} for element #{@name}" if @index > elements.length
  # Create a node if it doesn't exist
  if @index == elements.length
    new_element = REXML::Element.new(@name)
    rexml_node.add_element(new_element)
    new_element
  else
    elements[@index]
  end
end