Class: AbideDevUtils::XCCDF::Parser::Helpers::XPath::FindElement

Inherits:
Object
  • Object
show all
Defined in:
lib/abide_dev_utils/xccdf/parser/helpers.rb

Overview

Implements class methods to help with finding elements via XPath

Class Method Summary collapse

Class Method Details

.at_xpath(element, path) ⇒ Object



115
116
117
118
119
120
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 115

def self.at_xpath(element, path)
  elem = namespace_safe_at_xpath(element, path)
  return named_at_xpath(element, path) if elem.nil?

  elem
end

.named_at_xpath(element, path) ⇒ Object



138
139
140
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 138

def self.named_at_xpath(element, path)
  element.at_xpath("*[name()='#{path}']")
end

.named_xpath(element, path) ⇒ Object



134
135
136
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 134

def self.named_xpath(element, path)
  element.xpath("*[name()='#{path}']")
end

.namespace_safe_at_xpath(element, path) ⇒ Object



128
129
130
131
132
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 128

def self.namespace_safe_at_xpath(element, path)
  element.at_xpath(path)
rescue Nokogiri::XML::XPath::SyntaxError
  named_at_xpath(element, path)
end

.namespace_safe_xpath(element, path) ⇒ Object



122
123
124
125
126
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 122

def self.namespace_safe_xpath(element, path)
  element.xpath(path)
rescue Nokogiri::XML::XPath::SyntaxError
  named_xpath(element, path)
end

.xpath(element, path) ⇒ Object



108
109
110
111
112
113
# File 'lib/abide_dev_utils/xccdf/parser/helpers.rb', line 108

def self.xpath(element, path)
  elem = namespace_safe_xpath(element, path)
  return named_xpath(element, path) if elem.nil?

  elem
end