module RGen::Ext::Comparison::ShallowComparator
Public Class Methods
eql?(left,right)
click to toggle source
It does not check references, so that infinite recursion is avoided
# File lib/rgen/ext/comparison.rb, line 39 def self.eql?(left,right) return false if right==nil return false unless left.class==right.class left.class.ecore.eAllAttributes.each do |attribute| raise "Attrib <nil> for class #{left.class.ecore.name}" unless attribute left_value = left.send(attribute.name) right_value = right.send(attribute.name) if (!attribute.many) || attribute.ordered return false unless left_value.eql?(right_value) else return false unless UnorderedComparison.eql?(left_value,right_value,nil) end end true end