Sha256: 4a4059c10ee4511f6bfd6ba3fd7b473b5554965fd08b7c0f04629009f0c17f1e

Contents?: true

Size: 946 Bytes

Versions: 2

Compression:

Stored size: 946 Bytes

Contents

module Vedeu

  # Forces the value within defined limits.
  #
  class Limit

    # @param (see #initialize)
    def self.apply(v, vn, max, min = 1)
      new(v, vn, max, min).apply
    end

    # @param v [Fixnum]
    # @param vn [Fixnum]
    # @param max [Fixnum]
    # @param min [Fixnum]
    # @return [Vedeu::Limit]
    def initialize(v, vn, max, min = 1)
      @v   = v
      @vn  = vn
      @max = max
      @min = min || 1
    end

    # @return [Fixnum]
    def apply
      if (v + vn) > max
        applied = vn - ((v + vn) - max)
        return applied < min ? min : applied

      else
        vn

      end
    end

    private

    # @!attribute [r] v
    # @return [Fixnum]
    attr_reader :v

    # @!attribute [r] vn
    # @return [Fixnum]
    attr_reader :vn

    # @!attribute [r] min
    # @return [Fixnum]
    attr_reader :min

    # @!attribute [r] max
    # @return [Fixnum]
    attr_reader :max

  end # Limit

end # Vedeu

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.4.9 lib/vedeu/geometry/limit.rb
vedeu-0.4.8 lib/vedeu/geometry/limit.rb