class ShortScale::TierCalculator
Public Class Methods
new(config = {})
click to toggle source
# File lib/short_scale/tier_calculator.rb, line 12 def initialize(config = {}) # Prioritize provided configuration over default @base = config[:base] || @@default_config[:base] @tiers = config[:tiers] || @@default_config[:tiers] # Add zero magnitude tier (units) if not provided @tiers[0] ||= '' end
Public Instance Methods
tier(number)
click to toggle source
Calculates the tier for a given number
# File lib/short_scale/tier_calculator.rb, line 22 def tier(number) _magnitude = magnitude(number) # If provided number is lesser than 1 then magnitude defaults to zero if _magnitude > 0 tier_magnitude = @tiers.keys.select { |limit| limit <= _magnitude }.max else tier_magnitude = 0 end { magnitude: tier_magnitude, unit: @tiers[tier_magnitude] } end
Private Instance Methods
magnitude(number)
click to toggle source
Calculates the magnitude of a number if a given base
# File lib/short_scale/tier_calculator.rb, line 40 def magnitude(number) Math.log10(number) / Math.log10(@base) end