Module: Workdays::TimeExtensions
- Included in:
- ActiveSupport::TimeWithZone, Date, Time
- Defined in:
- lib/workdays/time_extensions.rb
Instance Method Summary collapse
- #last_workday(locale = DEFAULT_LOCALE) ⇒ Object
- #to_workday(locale = DEFAULT_LOCALE) ⇒ Object
- #workday?(locale = DEFAULT_LOCALE) ⇒ Boolean
- #workdays_after(delta = 0, locale = DEFAULT_LOCALE) ⇒ Object
- #workdays_before(delta = 0, locale = DEFAULT_LOCALE) ⇒ Object
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
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 |