class MeterCat::Calculator

Public Instance Methods

calculate(meters, range, names = nil) click to toggle source
# File lib/meter_cat/calculator.rb, line 17
def calculate(meters, range, names = nil)
  (names || keys).each do |name|
    calculation = fetch(name, nil)
    next unless calculation

    meters[name] = {}
    range.each do |date|
      meters[name][date] = fetch(name).calculate(meters, date)
    end
  end
end
dependencies(names) click to toggle source

Add any missing names required for calculations that are named

# File lib/meter_cat/calculator.rb, line 31
def dependencies(names)
  names.each do |name|
    calculation = fetch(name, nil)
    next unless calculation

    calculation.dependencies.each do |dependency|
      names << dependency unless names.include?(dependency)
    end
  end
end
percentage(name, numerator, denominator) click to toggle source
# File lib/meter_cat/calculator.rb, line 9
def percentage(name, numerator, denominator)
  store(name, Divide.new(numerator, denominator, Divide::FORMAT_PERCENTAGE))
end
ratio(name, numerator, denominator) click to toggle source
# File lib/meter_cat/calculator.rb, line 5
def ratio(name, numerator, denominator)
  store(name, Divide.new(numerator, denominator, Divide::FORMAT_RATIO))
end
sum(name, values) click to toggle source
# File lib/meter_cat/calculator.rb, line 13
def sum(name, values)
  store(name, Sum.new(values))
end