Sha256: 7cb810c5b3bfe4b9fcab3c0cd5f2c02260a02cb995abb0371f5f4bdfb5ef9ec2

Contents?: true

Size: 972 Bytes

Versions: 35

Compression:

Stored size: 972 Bytes

Contents

module Calculations # :nodoc:all
  
  # A location calculation recalculates a 1-d location
  # to the Picky internal 1-d "grid".
  #
  # For example, if you have a location x == 12.3456,
  # it will be recalculated into 3, if the minimum is 9
  # and the gridlength is 1.
  #
  class Location
    
    attr_reader :minimum
    
    def initialize user_grid, precision = nil
      @user_grid = user_grid
      @precision = precision || 1
      @grid      = @user_grid / (@precision + 0.5)
    end
    
    def minimum= minimum
      # Add a margin of 1 user grid.
      #
      minimum -= @user_grid
      
      # Add plus 1 grid so that the index key never falls on 0.
      # Why? to_i maps by default to 0.
      #
      minimum -= @grid
      
      @minimum = minimum
    end
    
    #
    #
    def add_margin length
      @minimum -= length
    end
    
    #
    #
    def recalculate location
      ((location - @minimum) / @grid).floor
    end
    
  end
  
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
picky-2.1.2 lib/picky/internals/calculations/location.rb
picky-2.1.1 lib/picky/internals/calculations/location.rb
picky-2.1.0 lib/picky/internals/calculations/location.rb
picky-2.0.0 lib/picky/internals/calculations/location.rb
picky-2.0.0.pre3 lib/picky/internals/calculations/location.rb
picky-2.0.0.pre2 lib/picky/internals/calculations/location.rb
picky-2.0.0.pre1 lib/picky/internals/calculations/location.rb
picky-1.5.4 lib/picky/internals/calculations/location.rb
picky-1.5.3 lib/picky/internals/calculations/location.rb
picky-1.5.2 lib/picky/internals/calculations/location.rb
picky-1.5.1 lib/picky/internals/calculations/location.rb
picky-1.5.0 lib/picky/internals/calculations/location.rb
picky-1.4.3 lib/picky/internals/calculations/location.rb
picky-1.4.2 lib/picky/internals/calculations/location.rb
picky-1.4.1 lib/picky/calculations/location.rb
picky-1.4.0 lib/picky/calculations/location.rb
picky-1.3.4 lib/picky/calculations/location.rb
picky-1.3.3 lib/picky/calculations/location.rb
picky-1.3.2 lib/picky/calculations/location.rb
picky-1.3.1 lib/picky/calculations/location.rb