class Ingreedy::Parser
Constants
- Result
Attributes
original_query[R]
Public Class Methods
new(original_query)
click to toggle source
# File lib/ingreedyfork/ingreedy_parser.rb, line 21 def initialize(original_query) @original_query = original_query end
Public Instance Methods
parse()
click to toggle source
# File lib/ingreedyfork/ingreedy_parser.rb, line 25 def parse result = Result.new result.original_query = original_query parslet = RootParser.new(original_query).parse result.amount = rationalize parslet[:amount] result.amount = [ result.amount, rationalize(parslet[:amount_end]), ] if parslet[:amount_end] result.container_amount = rationalize(parslet[:container_amount]) result.unit = convert_unit_variation_to_canonical( parslet[:unit].to_s, ) if parslet[:unit] result.container_unit = convert_unit_variation_to_canonical( parslet[:container_unit].to_s, ) if parslet[:container_unit] result.ingredient = parslet[:ingredient].to_s.lstrip.rstrip # TODO: hack result end
Private Instance Methods
convert_unit_variation_to_canonical(unit_variation)
click to toggle source
# File lib/ingreedyfork/ingreedy_parser.rb, line 54 def convert_unit_variation_to_canonical(unit_variation) UnitVariationMapper.unit_from_variation(unit_variation) end
rationalize(amount)
click to toggle source
# File lib/ingreedyfork/ingreedy_parser.rb, line 58 def rationalize(amount) return unless amount integer = amount[:integer_amount] integer &&= integer.to_s float = amount[:float_amount] float &&= float.to_s fraction = amount[:fraction_amount] fraction &&= fraction.to_s word = amount[:word_integer_amount] word &&= word.to_s Rationalizer.rationalize( integer: integer, float: float, fraction: fraction, word: word, ) end