Class: GBWorkDay::WorkWeek
- Inherits:
-
Object
- Object
- GBWorkDay::WorkWeek
- Defined in:
- lib/gb_work_day/work_week.rb
Instance Attribute Summary collapse
-
#free_days ⇒ Object
readonly
Returns the value of attribute free_days.
-
#free_days_per_week ⇒ Object
readonly
Returns the value of attribute free_days_per_week.
-
#week_start ⇒ Object
readonly
Returns the value of attribute week_start.
-
#work_days ⇒ Object
readonly
Returns the value of attribute work_days.
-
#work_days_per_week ⇒ Object
readonly
Returns the value of attribute work_days_per_week.
Class Method Summary collapse
Instance Method Summary collapse
-
#==(other) ⇒ Object
:nodoc:.
-
#eql?(other) ⇒ Boolean
:nodoc:.
-
#free_day?(day) ⇒ Boolean
Check if given day is a work day.
-
#initialize(work_days = 7, week_start = 1) ⇒ WorkWeek
constructor
A new instance of WorkWeek.
-
#work_day?(day) ⇒ Boolean
Check if given day is a work day.
Constructor Details
#initialize(work_days = 7, week_start = 1) ⇒ WorkWeek
Returns a new instance of WorkWeek.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/gb_work_day/work_week.rb', line 7 def initialize(work_days=7, week_start=1) work_days = work_days.to_i week_start = week_start.to_i 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 % 7 @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 |
Instance Attribute Details
#free_days ⇒ Object (readonly)
Returns the value of attribute free_days.
3 4 5 |
# File 'lib/gb_work_day/work_week.rb', line 3 def free_days @free_days end |
#free_days_per_week ⇒ Object (readonly)
Returns the value of attribute free_days_per_week.
3 4 5 |
# File 'lib/gb_work_day/work_week.rb', line 3 def free_days_per_week @free_days_per_week end |
#week_start ⇒ Object (readonly)
Returns the value of attribute week_start.
3 4 5 |
# File 'lib/gb_work_day/work_week.rb', line 3 def week_start @week_start end |
#work_days ⇒ Object (readonly)
Returns the value of attribute work_days.
3 4 5 |
# File 'lib/gb_work_day/work_week.rb', line 3 def work_days @work_days end |
#work_days_per_week ⇒ Object (readonly)
Returns the value of attribute work_days_per_week.
3 4 5 |
# File 'lib/gb_work_day/work_week.rb', line 3 def work_days_per_week @work_days_per_week end |
Class Method Details
.current ⇒ Object
49 50 51 |
# File 'lib/gb_work_day/work_week.rb', line 49 def current Thread.current[:working_week] ||= self.new end |
.current=(new_week) ⇒ Object
53 54 55 |
# File 'lib/gb_work_day/work_week.rb', line 53 def current=(new_week) Thread.current[:working_week] = new_week if WorkWeek === new_week end |
Instance Method Details
#==(other) ⇒ Object
:nodoc:
40 41 42 |
# File 'lib/gb_work_day/work_week.rb', line 40 def ==(other) # :nodoc: work_days_per_week == other.work_days_per_week && week_start == other.week_start end |
#eql?(other) ⇒ Boolean
:nodoc:
44 45 46 |
# File 'lib/gb_work_day/work_week.rb', line 44 def eql?(other) # :nodoc: work_days_per_week.eql?(other.work_days_per_week) && week_start.eql?(other.week_start) end |
#free_day?(day) ⇒ Boolean
Check if given day is a work day
34 35 36 37 38 |
# File 'lib/gb_work_day/work_week.rb', line 34 def free_day?(day) week_day = day.wday week_day = 7 if week_day == 0 free_days.include? week_day end |
#work_day?(day) ⇒ Boolean
Check if given day is a work day
26 27 28 29 30 |
# File 'lib/gb_work_day/work_week.rb', line 26 def work_day?(day) week_day = day.wday week_day = 7 if week_day == 0 work_days.include? week_day end |