class Krikri::XmlParser::Value

An XML Parser Value node class @see Krikri::Parser::Value

Attributes

namespaces[RW]
node[RW]

Public Class Methods

new(node, namespaces) click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 39
def initialize(node, namespaces)
  node = node.root if node.xml?
  @node = node
  @namespaces = namespaces
end

Public Instance Methods

attributes() click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 45
def attributes
  @node.attributes.keys.map(&:to_sym)
end
children() click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 49
def children
  @node.element_children.map do |child|
    return child.name unless child.namespace
    "#{@namespaces.key(child.namespace.href)}:#{child.name}"
  end
end
value() click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 56
def value
  @node.content
end
values?() click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 60
def values?
  !select_values.empty?
end

Private Instance Methods

attribute(name) click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 78
def attribute(name)
  @node.attributes[name.to_s].value
end
get_child_nodes(name) click to toggle source

@see Krikri::Parser#get_child_nodes

@param name_exp [String] Element name @return [Krikri::Parser::ValueArray]

# File lib/krikri/parsers/xml_parser.rb, line 71
def get_child_nodes(name)
  Krikri::Parser::ValueArray.new(
    @node.xpath("#{@node.path}/#{name}", @namespaces)
      .map { |node| self.class.new(node, @namespaces) }
  )
end
select_values() click to toggle source
# File lib/krikri/parsers/xml_parser.rb, line 82
def select_values
  Krikri::Parser::ValueArray.new(@node.children.select(&:text?))
end