Sha256: 08921f74a3163c180bdd6501dfbb1a0a53bb4342e160caa8e4c4d6e1c7921185

Contents?: true

Size: 860 Bytes

Versions: 4

Compression:

Stored size: 860 Bytes

Contents

class Ecu
  class ValueComparison

    def initialize(left, right)
      # check_compatibility(left, right)
      @left, @right = left, right
    end

    def eql?
      case [@left, @right]
      in [NilClass, NilClass] then @left == @right
      in [String, String]     then @left == @right
      in [Numeric, Numeric]   then @left == @right
      in [Array, Array]       then arrays_eql?(@left, @right)
      in [_, _]               then false
      end
    end

    private

    def arrays_eql?(left, right)
      return false unless left.size == right.size

      left.zip(right).all? { self.class.new(*_1).eql? }
    end

    def check_compatibility(left, right)
      if left.class != right.class
        fail ArgumentError, "Values must have the same class for comparison (#{left}: #{left.class}/#{right}: #{right.class})"
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
automotive-ecu-0.1.10 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.9 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.8 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.7 lib/ecu/labels/value_comparison.rb