class Gammo::XPath::AST::NodeTest::Name

Attributes

local[R]
namespace[R]

Public Class Methods

new(local: nil, namespace: nil) click to toggle source
# File lib/gammo/xpath/ast/node_test.rb, line 20
def initialize(local: nil, namespace: nil)
  @local = local
  @namespace = namespace
end

Public Instance Methods

match?(node) click to toggle source
# File lib/gammo/xpath/ast/node_test.rb, line 29
def match?(node)
  return false unless node
  return false if xml_namespace?
  return !namespace || namespace == node.namespace if local == ?*
  # TODO: investigate
  if node.instance_of?(Gammo::Attribute)
    # TODO: need to work
    node.key == local && node.namespace == namespace
  else
    if document = node.owner_document
      # TODO: ignoring ascii case
      return node.tag == local && (!namespace || node.namespace == namespace) if node.instance_of?(Gammo::Node::Element)
      return node.tag == local && node.namespace == namespace && namespace
    end
    node.tag == local && node.namespace == namespace
  end
end
xml_namespace?() click to toggle source
# File lib/gammo/xpath/ast/node_test.rb, line 25
def xml_namespace?
  namespace == 'http://www.w3.org/XML/1998/namespace'
end