Sha256: 1cc25ac4f76a59bde88ce70dca407055d31b1546bc05ec379957926af115b20b
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
module TestXml module NokogiriExt module Node def match?(element, compare_value = false) if compare_value && element.leaf? comparable_attributes == element.comparable_attributes and equal_text?(element) else contains_elements_of?(element) && element.elements.all? {|el| matches_at_least_one?(el, compare_value) } end end def elements children.collect {|node| node if node.element? }.delete_if {|node| node.nil?} end # Attributes of the current node. def comparable_attributes attributes.collect {|k,a| [k.downcase, a.value]}.sort end # Check if node is either childless, self-closing, or has content text. def leaf? children.size == 0 or (children.size == 1 && children.first.text?) end private def equal_text?(element) content == element.content end def contains_elements_of?(element) element.elements.find {|el| not contains?(el)}.nil? end def contains?(element) children.find {|node| node.element? && node.name == element.name } end def matches_at_least_one?(element, compare_value) search(element.name).find { |el| el.match?(element, compare_value) } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
test_xml-0.1.0 | lib/test_xml/nokogiri/node.rb |