Sha256: 755e7472ef7426b6a757da60cef3baee99f13fe757ab5256d4f42c2a06cde171

Contents?: true

Size: 884 Bytes

Versions: 5

Compression:

Stored size: 884 Bytes

Contents

class Ecu
  class ValueComparison

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

    def eql?
      return false unless @left.class == @right.class
      case @left
      when NilClass then @left == @right
      when String   then @left == @right
      when Numeric  then @left == @right
      when Array    then arrays_eql?(@left, @right)
      else
        fail "Unkown value class: #{@left.class}"
      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

5 entries across 5 versions & 1 rubygems

Version Path
automotive-ecu-0.1.6 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.5 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.4 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.3 lib/ecu/labels/value_comparison.rb
automotive-ecu-0.1.2 lib/ecu/labels/value_comparison.rb