Sha256: 964cd6ca4f6610b6ffd55049b9a37ad9b0d25ab2f0b5d2c62ce54a308a62ef1e

Contents?: true

Size: 1.41 KB

Versions: 9

Compression:

Stored size: 1.41 KB

Contents

module SPCore
# Provides methods to make limiting Proc objects, bound to
# the given limits.
class Limiters
  # make a limiter that actually doesn't limit at all.
  def self.make_no_limiter
    return lambda do |input|
      return input
    end
  end
  
  # make a limiter that keeps values within the given range.
  def self.make_range_limiter range
    return lambda do |input|
      if input < range.first
        return range.first
      elsif input > range.last
        return range.last
      else
        return input
      end
    end
  end

  # make a limiter that keeps values at or below the given upper limit.
  def self.make_upper_limiter limit
    return lambda do |input|
      if input > limit
        return limit
      else
        return input
      end
    end
  end

  # make a limiter that keeps values at or above the given lower limit.
  def self.make_lower_limiter limit
    return lambda do |input|
      if input < limit
        return limit
      else
        return input
      end
    end
  end
  
  # make a limiter that limits values to a set of good values. Given also the
  # current value, it either returns the input value if it's included in
  # the set of good values, or it returns the current value.
  def self.make_enum_limiter good_values
    return lambda do |input, current|
      if good_values.include?(input)
        return input
      else
        return current
      end
    end
  end
end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
spcore-0.2.1 lib/spcore/util/limiters.rb
spcore-0.2.0 lib/spcore/util/limiters.rb
spcore-0.1.9 lib/spcore/util/limiters.rb
spcore-0.1.8 lib/spcore/util/limiters.rb
spcore-0.1.7 lib/spcore/util/limiters.rb
spcore-0.1.6 lib/spcore/util/limiters.rb
spcore-0.1.5 lib/spcore/util/limiters.rb
spcore-0.1.4 lib/spcore/util/limiters.rb
spcore-0.1.3 lib/spcore/util/limiters.rb