Module: RecipeScrapers::Parsers::Quantity

Defined in:
lib/recipe_scrapers/parsers/quantity.rb

Constant Summary collapse

NUMBER =
/\d+(?:[.,]\d+)?/
SLASH_FRACTION =
%r{\d+\s*[/⁄]\s*\d+}
VULGAR =
/[½⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅜⅝⅞⅑⅒]/
JOINER =
/\s+(?:and|und|y|e)\s+|\s*と\s*/
QUANTITY =
/
  \d+(?:#{JOINER}|\s*)#{VULGAR}|\d+(?:#{JOINER}|\s+)#{SLASH_FRACTION}|#{SLASH_FRACTION}|#{NUMBER}|#{VULGAR}
/xo
PLUS =
/\s*\+\s*/
SUM =
/#{QUANTITY}(?:#{PLUS}#{QUANTITY})*/o
SLASH_SPACING =
%r{\s*([/⁄])\s*}
WHOLE_AND_FRACTION =
/#{JOINER}|\s+|(?=#{VULGAR})/o

Class Method Summary collapse

Class Method Details

.total(sum) ⇒ Object



24
25
26
# File 'lib/recipe_scrapers/parsers/quantity.rb', line 24

def total(sum)
  sum.split(PLUS).sum { |term| term_value(term) }.to_f
end

.value(sum) ⇒ Object



19
20
21
22
# File 'lib/recipe_scrapers/parsers/quantity.rb', line 19

def value(sum)
  amount = total(sum).round(2)
  amount.zero? ? nil : amount
end