Quantity computation from formula
This commit is contained in:
parent
304c8c788d
commit
88e5cb430a
@ -71,7 +71,9 @@ class Ingredient < ActiveRecord::Base
|
|||||||
i,
|
i,
|
||||||
input_q.map do |i_q|
|
input_q.map do |i_q|
|
||||||
nutrient_data = (completed_q[i_q.name] || nutrients[i_q.name])[i.id]
|
nutrient_data = (completed_q[i_q.name] || nutrients[i_q.name])[i.id]
|
||||||
[i_q.name, (nutrient_data || [nil, nil])[0]]
|
# FIXME: result for computation with nil values (substituted with 0s)
|
||||||
|
# should be marked as not precise
|
||||||
|
[i_q.name, (nutrient_data || [0, nil])[0]]
|
||||||
end.to_h
|
end.to_h
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
@ -70,6 +70,15 @@ class Quantity < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
def calculate(inputs)
|
def calculate(inputs)
|
||||||
inputs.map { |i, values| [i, 1.0] }
|
paramed_formula = Ripper.lex(formula).map do |*, ttype, token|
|
||||||
|
QUANTITY_TTYPES.include?(ttype) ? "params['#{token}']" : token
|
||||||
|
end.join
|
||||||
|
inputs.map { |i, values| [i, get_binding(values).eval(paramed_formula)] }
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def get_binding(params)
|
||||||
|
binding
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user