Module: RussianProductionCalendar
- Extended by:
- RussianProductionCalendar
- Included in:
- RussianProductionCalendar
- Defined in:
- lib/russian_production_calendar.rb,
lib/russian_production_calendar/error.rb,
lib/russian_production_calendar/version.rb
Constant Summary collapse
- CALENDAR_PATH =
Звездочкой (*) отмечены предпраздничные (сокращенные) дни. Плюсом (+) отмечены перенесенные выходные дни
'russian_production_calendar/holidays.csv'
- SHORTENED_POSTFIX =
'*'
- WEEKEND_POSTPONED_POSTFIX =
'+'
- DAY_SEP =
','
- MONTHS_MAP =
{ 1 => 'Январь', 2 => 'Февраль', 3 => 'Март', 4 => 'Апрель', 5 => 'Май', 6 => 'Июнь', 7 => 'Июль', 8 => 'Август', 9 => 'Сентябрь', 10 => 'Октябрь', 11 => 'Ноябрь', 12 => 'Декабрь' }.freeze
- Error =
Class.new(StandardError)
- NotFoundError =
Class.new(Error)
- VERSION =
'0.1.2020.10.26'
Instance Method Summary collapse
-
#gt_holiday(day) ⇒ Date
следующий выходной день.
-
#gt_workday(day) ⇒ Date
следующий рабочий день.
-
#gte_holiday(day) ⇒ Date
следующий выходной день (или текущий, если он выходной).
-
#gte_workday(day) ⇒ Date
следующий рабочий день (или текущий, если он рабочий).
-
#holiday?(date) ⇒ Boolean
True/false - выходной/рабочий.
-
#lt_holiday(day) ⇒ Date
предыдущий рабочий день.
-
#lt_workday(day) ⇒ Date
предыдущий рабочий день.
-
#lte_holiday(day) ⇒ Date
предыдущий выходной день (или текущий, если он выходной).
-
#lte_workday(day) ⇒ Date
предыдущий рабочий день (или текущий, если он рабочий).
- #workday?(date) ⇒ Boolean
Instance Method Details
#gt_holiday(day) ⇒ Date
Returns следующий выходной день.
96 97 98 99 100 101 |
# File 'lib/russian_production_calendar.rb', line 96 def gt_holiday(day) loop do day = day.next_day break day if holiday?(day) end end |
#gt_workday(day) ⇒ Date
Returns следующий рабочий день.
62 63 64 65 66 67 |
# File 'lib/russian_production_calendar.rb', line 62 def gt_workday(day) loop do day = day.next_day break day if workday?(day) end end |
#gte_holiday(day) ⇒ Date
Returns следующий выходной день (или текущий, если он выходной).
88 89 90 91 92 |
# File 'lib/russian_production_calendar.rb', line 88 def gte_holiday(day) loop do holiday?(day) ? (break day) : (day = day.next_day) end end |
#gte_workday(day) ⇒ Date
Returns следующий рабочий день (или текущий, если он рабочий).
54 55 56 57 58 |
# File 'lib/russian_production_calendar.rb', line 54 def gte_workday(day) loop do workday?(day) ? (break day) : (day = day.next_day) end end |
#holiday?(date) ⇒ Boolean
Returns true/false - выходной/рабочий.
34 35 36 37 |
# File 'lib/russian_production_calendar.rb', line 34 def holiday?(date) days = index.dig(date.year, date.month) || raise(NotFoundError, date) days.include?(date.day) end |
#lt_holiday(day) ⇒ Date
Returns предыдущий рабочий день.
105 106 107 108 109 110 |
# File 'lib/russian_production_calendar.rb', line 105 def lt_holiday(day) loop do day = day.prev_day break day if holiday?(day) end end |
#lt_workday(day) ⇒ Date
Returns предыдущий рабочий день.
71 72 73 74 75 76 |
# File 'lib/russian_production_calendar.rb', line 71 def lt_workday(day) loop do day = day.prev_day break day if workday?(day) end end |
#lte_holiday(day) ⇒ Date
Returns предыдущий выходной день (или текущий, если он выходной).
80 81 82 83 84 |
# File 'lib/russian_production_calendar.rb', line 80 def lte_holiday(day) loop do holiday?(day) ? (break day) : (day = day.prev_day) end end |
#lte_workday(day) ⇒ Date
Returns предыдущий рабочий день (или текущий, если он рабочий).
46 47 48 49 50 |
# File 'lib/russian_production_calendar.rb', line 46 def lte_workday(day) loop do workday?(day) ? (break day) : (day = day.prev_day) end end |
#workday?(date) ⇒ Boolean
40 41 42 |
# File 'lib/russian_production_calendar.rb', line 40 def workday?(date) !holiday?(date) end |