Sha256: 033bb54f293a5f777be8cd9193af6bf8c902ca5b9a629839bd03460de5b1034c
Contents?: true
Size: 1.71 KB
Versions: 6
Compression:
Stored size: 1.71 KB
Contents
# @private class LibXML::XML::Node def elements result = [] each_element { |e| result << e } return result end # if node2 contains at least all that I do def simplification_of?(node2) first_diff(node2).nil? end # return first difference where self has something more than node2 does def first_diff(node2) where = self.path.split('/').last return "#{where}> Equivalent node does not exist: #{self.name} != NOTHING" if node2.nil? return "#{where}> Names are different: #{self.name} != #{node2.name}" if (self.name != node2.name) self.attributes.each do |attr| return "#{where}> Attribute #{attr} have diffent values: #{attr.value} != #{node2.attributes[attr.name]}" unless node2.attributes[attr.name] == attr.value end elems1 = self.elements elems2 = node2.elements # return "#{where}> elements have different number of subelements #{elems1.length} != #{elems2.length}" if (elems1.length != elems2.length) elems1.length.times do |i| if (elems1[i].node_type_name == 'text') && ((elems1[i].to_s != elems2[i].to_s) ) return "#{where}> #{i+1}th text subelements are different: #{elems1[i].to_s} != #{elems2[i].to_s}" elsif (elems1[i].node_type_name == 'element') && (!elems1[i].simplification_of?(elems2[i])) return "#{where}/[#{i+1}]#{elems1[i].first_diff(elems2[i])}" end end return nil end def equals?(node2) #TODO redefine == with this self.simplification_of?(node2) and node2.simplification_of?(self) end end class Array def sum(identity = 0, &block) if block_given? map(&block).sum(identity) else inject(0){ |sum, element| sum.to_f + element.to_f } || identity end end end
Version data entries
6 entries across 6 versions & 1 rubygems