Class: FloorCalculator::Solver

Inherits:
Object
  • Object
show all
Defined in:
lib/floor_calculator/solver.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(markups, markup_name, options) ⇒ Solver

Returns a new instance of Solver.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/floor_calculator/solver.rb', line 12

def initialize(markups, markup_name, options)
  @markups = markups
  markup = markups.fetch(markup_name.to_s, {})
  source_formula = source_markup(markup, options[:source])
  country_formula = country_markup(source_formula, options[:country].to_s.downcase)
  @formula = destination_markup(country_formula, options[:destination])
  if @formula.nil?
    raise "Formula in #{markup_name.to_s} not found for: #{options[:source]}, "\
          "#{options[:country].to_s.downcase}, #{options[:destination]}"
  end
  @price = options[:price]
  @weight = options[:weight]
  @fast = options[:fast]
  @condition = options[:condition]
end

Instance Attribute Details

#conditionObject (readonly)

Returns the value of attribute condition.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def condition
  @condition
end

#fastObject (readonly)

Returns the value of attribute fast.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def fast
  @fast
end

#formulaObject (readonly)

Returns the value of attribute formula.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def formula
  @formula
end

#markupsObject (readonly)

Returns the value of attribute markups.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def markups
  @markups
end

#priceObject (readonly)

Returns the value of attribute price.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def price
  @price
end

#weightObject (readonly)

Returns the value of attribute weight.



6
7
8
# File 'lib/floor_calculator/solver.rb', line 6

def weight
  @weight
end

Class Method Details

.calculate(markups, markup_name, options) ⇒ Object



8
9
10
# File 'lib/floor_calculator/solver.rb', line 8

def self.calculate(markups, markup_name, options)
  new(markups, markup_name, options).calculate
end

Instance Method Details

#calculateObject



28
29
30
# File 'lib/floor_calculator/solver.rb', line 28

def calculate
  Dentaku.evaluate(formula, price: price, weight: weight, fast: fast, condition: condition)
end