class GBWorkDay::WorkWeek

Attributes

free_days[R]
free_days_per_week[R]
work_days[R]
work_days_per_week[R]

Public Class Methods

current() click to toggle source
# File lib/gb_work_day/work_week.rb, line 48
def current
  Thread.current[:working_week] ||= self.new
end
current=(new_week) click to toggle source
# File lib/gb_work_day/work_week.rb, line 52
def current=(new_week)
  Thread.current[:working_week] = new_week if WorkWeek === new_week
end
new(work_days = 7) click to toggle source

@param work_days [#to_i] Amount of working days in a week. Default value is 7.

# File lib/gb_work_day/work_week.rb, line 6
def initialize(work_days = 7)
  work_days = work_days.to_i
  week_start = 1
  raise ArgumentError, 'Work days have to be between 0 and 7!' unless work_days >= 0 && work_days <= 7
  @work_days_per_week = work_days
  @week_start = week_start
  @free_days_per_week = 7 - @work_days_per_week
  @work_days = []
  @work_days_per_week.times do
    day = week_start % 7
    @work_days << (day != 0 ? day : 7)
    week_start += 1
  end
  @work_days.sort!
  @free_days = (1..7).to_a - @work_days
end

Public Instance Methods

free_day?(day) click to toggle source

Check if given day is a work day @param day [Time, Date]

# File lib/gb_work_day/work_week.rb, line 33
def free_day?(day)
  week_day = day.wday
  week_day = 7 if week_day == 0
  free_days.include? week_day
end
work_day?(day) click to toggle source

Check if given day is a work day @param day [Time, Date]

# File lib/gb_work_day/work_week.rb, line 25
def work_day?(day)
  week_day = day.wday
  week_day = 7 if week_day == 0
  work_days.include? week_day
end