Class: MeterCat::Calculator

Inherits:
Hash
  • Object
show all
Defined in:
lib/meter_cat/calculator.rb

Instance Method Summary collapse

Instance Method Details

#calculate(meters, range, names = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# 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) ⇒ Object

Add any missing names required for calculations that are named



31
32
33
34
35
36
37
38
39
40
# 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) ⇒ Object



9
10
11
# 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) ⇒ Object



5
6
7
# 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) ⇒ Object



13
14
15
# File 'lib/meter_cat/calculator.rb', line 13

def sum(name, values)
  store(name, Sum.new(values))
end