Sha256: f42cbfedd60e1f71c0863644912a102de84b217e756cd42be7c032f2852c87f9

Contents?: true

Size: 939 Bytes

Versions: 2

Compression:

Stored size: 939 Bytes

Contents

module Vedeu

  # Forces the value within defined limits.
  #
  class Limit

    # @see #new, #apply
    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.7 lib/vedeu/geometry/limit.rb
vedeu-0.4.6 lib/vedeu/geometry/limit.rb