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
# File 'lib/meter_cat/calculator.rb', line 17

def calculate( meters, range, names = nil )
  (names || keys).each do |name|
    if calculation = fetch( name, nil )
      meters[ name ] = {}
      range.each do |date|
        meters[ name ][ date] = fetch( name ).calculate( meters, date )
      end
    end
  end
end

#dependencies(names) ⇒ Object

Add any missing names required for calculations that are named



30
31
32
33
34
35
36
37
38
# File 'lib/meter_cat/calculator.rb', line 30

def dependencies( names )
  names.each do |name|
    if calculation = fetch( name, nil )
      calculation.dependencies.each do |dependency|
        names << dependency unless names.include?( dependency )
      end
    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