module Workdays::TimeExtensions

Public Instance Methods

last_workday(locale = DEFAULT_LOCALE) click to toggle source
# File lib/workdays/time_extensions.rb, line 12
def last_workday(locale = DEFAULT_LOCALE)
  day = self - 1.day
  day -= 1.day until day.workday?(locale)
  day
end
to_workday(locale = DEFAULT_LOCALE) click to toggle source
# File lib/workdays/time_extensions.rb, line 18
def to_workday(locale = DEFAULT_LOCALE)
  day = self
  return day if day.workday?(locale)
  day.last_workday(locale)
end
workday?(locale = DEFAULT_LOCALE) click to toggle source
# File lib/workdays/time_extensions.rb, line 8
def workday?(locale = DEFAULT_LOCALE)
  on_weekday? && !to_date.holiday?(locale, :observed)
end
workdays_after(delta = 0, locale = DEFAULT_LOCALE) click to toggle source
# File lib/workdays/time_extensions.rb, line 24
def workdays_after(delta = 0, locale = DEFAULT_LOCALE)
  workdays_before(-delta, locale)
end
workdays_before(delta = 0, locale = DEFAULT_LOCALE) click to toggle source
# File lib/workdays/time_extensions.rb, line 28
def workdays_before(delta = 0, locale = DEFAULT_LOCALE)
  day  = self
  days = delta.abs

  while days.positive? || !day.workday?(locale)
    days -= 1 if day.workday?(locale)
    day  -= delta.positive? ? 1.day : -1.days
  end

  day
end