Class: Ingreedy::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/ingreedy/ingreedy_parser.rb

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(original_query) ⇒ Parser

Returns a new instance of Parser.



21
22
23
# File 'lib/ingreedy/ingreedy_parser.rb', line 21

def initialize(original_query)
  @original_query = original_query
end

Instance Attribute Details

#original_queryObject (readonly)

Returns the value of attribute original_query.



10
11
12
# File 'lib/ingreedy/ingreedy_parser.rb', line 10

def original_query
  @original_query
end

Instance Method Details

#parseObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ingreedy/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