Sha256: 30a2ef75f6e4dc2d400ca25d6f59e55b9f35036ac28747bdf3204946724ab388

Contents?: true

Size: 1.16 KB

Versions: 11

Compression:

Stored size: 1.16 KB

Contents

module Comparable
  def self.normalize(what)
    return what if Integer === what

    return  1 if what > 0
    return -1 if what < 0
    return  0
  end

  def ==(other)
    return true if equal?(other)

    return false unless cmp = (self <=> other)
    return Comparable.normalize(cmp) == 0
  rescue StandardError
    false
  end

  def >(other)
    unless cmp = (self <=> other)
      raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
    end

    Comparable.normalize(cmp) > 0
  end

  def >=(other)
    unless cmp = (self <=> other)
      raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
    end

    Comparable.normalize(cmp) >= 0
  end

  def <(other)
    unless cmp = (self <=> other)
      raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
    end

    Comparable.normalize(cmp) < 0
  end

  def <=(other)
    unless cmp = (self <=> other)
      raise ArgumentError, "comparison of #{self.class} with #{other.class} failed"
    end

    Comparable.normalize(cmp) <= 0
  end

  def between?(min, max)
    return false if self < min
    return false if self > max
    return true
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
opal-0.6.3 opal/corelib/comparable.rb
opal-cj-0.7.0.beta2 opal/corelib/comparable.rb
opal-cj-0.7.0.beta1 opal/corelib/comparable.rb
opal-0.7.0.beta1 opal/corelib/comparable.rb
opal-0.6.2 opal/corelib/comparable.rb
opal-0.6.1 opal/corelib/comparable.rb
opal-0.6.0 opal/corelib/comparable.rb
opal-0.5.5 opal/corelib/comparable.rb
opal-0.5.4 opal/core/comparable.rb
opal-0.5.2 opal/core/comparable.rb
opal-0.5.0 corelib/comparable.rb