Module: Workdays::TimeExtensions

Included in:
ActiveSupport::TimeWithZone, Date, Time
Defined in:
lib/workdays/time_extensions.rb

Instance Method Summary collapse

Instance Method Details

#last_workday(locale = DEFAULT_LOCALE) ⇒ Object



12
13
14
15
16
# 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) ⇒ Object



18
19
20
21
22
# 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) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
# 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) ⇒ Object



24
25
26
# 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) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# 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