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