class Timing::NaturalTimeLanguage::LastNextDayName

Public Instance Methods

evaluate(zone_offset) click to toggle source
# File lib/timing/natural_time_language_interpreters.rb, line 57
def evaluate(zone_offset)
  today = TimeInZone.now(zone_offset).beginning_of_day

  return today if !including_today.empty? && today.wday == day_name.value

  if direction.last?
    if today.wday > day_name.value
      today - Interval.days(today.wday - day_name.value)
    else
      today - Interval.weeks(1) + Interval.days(day_name.value - today.wday)
    end
  else
    if today.wday < day_name.value
      today + Interval.days(day_name.value - today.wday)
    else
      today + Interval.weeks(1) - Interval.days(today.wday - day_name.value)
    end
  end
end