Class: Dentaku::BulkExpressionSolver

Inherits:
Object
  • Object
show all
Defined in:
lib/dentaku/bulk_expression_solver.rb

Instance Method Summary collapse

Constructor Details

#initialize(expressions, calculator) ⇒ BulkExpressionSolver

Returns a new instance of BulkExpressionSolver.



9
10
11
12
# File 'lib/dentaku/bulk_expression_solver.rb', line 9

def initialize(expressions, calculator)
  @expression_hash = FlatHash.from_hash(expressions)
  @calculator = calculator
end

Instance Method Details

#dependenciesObject



30
31
32
33
34
35
36
37
# File 'lib/dentaku/bulk_expression_solver.rb', line 30

def dependencies
  Hash[expression_deps].tap do |d|
    d.values.each do |deps|
      unresolved = deps.reject { |ud| d.has_key?(ud) }
      unresolved.each { |u| add_dependencies(d, u) }
    end
  end
end

#solve(&block) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/dentaku/bulk_expression_solver.rb', line 18

def solve(&block)
  error_handler = block || return_undefined_handler
  results = load_results(&error_handler)

  FlatHash.expand(
    expression_hash.each_with_object({}) do |(k, v), r|
      default = v.nil? ? v : :undefined
      r[k] = results.fetch(k.to_s, default)
    end
  )
end

#solve!Object



14
15
16
# File 'lib/dentaku/bulk_expression_solver.rb', line 14

def solve!
  solve(&raise_exception_handler)
end