Module: RecipeScrapers::Parsers::Durations

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

Constant Summary collapse

LANGUAGES =
{
  english: { hours: %w[h hr hrs hour hours], minutes: %w[m min mins minute minutes],
             seconds: %w[s sec secs second seconds] },
  german: { hours: %w[std stunde stunden], minutes: %w[minuten],
            seconds: %w[sek sekunde sekunden] },
  french: { hours: %w[heure heures], minutes: %w[minute minutes], seconds: %w[seconde secondes] },
  italian: { hours: %w[ora ore], minutes: %w[minuto minuti], seconds: %w[secondo secondi] },
  dutch: { hours: %w[uur], minutes: %w[minuut minuten], seconds: %w[seconde seconden] },
  swedish: { hours: %w[tim timme timmar], minutes: %w[minut minuter],
             seconds: %w[sekund sekunder] },
  norwegian: { hours: %w[time timer], minutes: %w[minutt minutter], seconds: %w[sekund sekunder] },
  hungarian: { hours: %w[óra órát], minutes: %w[perc percet], seconds: %w[másodperc] },
  russian: { hours: %w[ч час часа часов], minutes: %w[м мин минута минуты минут минуту],
             seconds: %w[с сек секунда секунды секунд] }
}.freeze
ISO =
/\AP(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:([\d.]+)S)?)?\z/
ISO_UNIT_MINUTES =
[10_080, 1440, 60, 1, 1 / 60.0].freeze
NUMBER =
/\d+/
RANGE =
/(\d+)\s*(?:-|–|—|to|до)\s*\d+/

Class Method Summary collapse

Class Method Details

.minutes(value) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/recipe_scrapers/parsers/durations.rb', line 33

def minutes(value)
  return nil if value.nil?
  return value if value.is_a?(Integer)
  return minutes(value["@value"]) if value.is_a?(Hash)

  text = Text.normalize(value)
  return nil if text.nil?

  from_iso(text) || from_words(text.gsub(RANGE, '\\1'))
end