Class: OpeningHoursConverter::Day
- Inherits:
-
Object
- Object
- OpeningHoursConverter::Day
show all
- Includes:
- Constants
- Defined in:
- lib/opening_hours_converter/day.rb
Constant Summary
Constants included
from Constants
Constants::DAYS, Constants::DAYS_MAX, Constants::IRL_DAYS, Constants::IRL_MONTHS, Constants::MINUTES_MAX, Constants::MONTH_END_DAY, Constants::OSM_DAYS, Constants::OSM_MONTHS, Constants::PH_WEEKDAY, Constants::YEAR_DAYS_MAX
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ Day
Returns a new instance of Day.
8
9
10
|
# File 'lib/opening_hours_converter/day.rb', line 8
def initialize
@intervals = []
end
|
Instance Attribute Details
#intervals ⇒ Object
Returns the value of attribute intervals.
6
7
8
|
# File 'lib/opening_hours_converter/day.rb', line 6
def intervals
@intervals
end
|
Instance Method Details
#add_interval(interval) ⇒ Object
83
84
85
86
|
# File 'lib/opening_hours_converter/day.rb', line 83
def add_interval(interval)
@intervals << interval
@intervals.length - 1
end
|
#clear_intervals ⇒ Object
96
97
98
|
# File 'lib/opening_hours_converter/day.rb', line 96
def clear_intervals
@intervals = []
end
|
#copy_intervals(intervals) ⇒ Object
100
101
102
103
104
105
106
107
108
|
# File 'lib/opening_hours_converter/day.rb', line 100
def copy_intervals(intervals)
@intervals = []
intervals.each do |interval|
if !interval.nil? && !interval.is_off && interval.day_start == 0 && interval.day_end == 0
@intervals << interval.dup
end
end
@intervals = get_intervals(true)
end
|
#edit_interval(id, interval) ⇒ Object
88
89
90
|
# File 'lib/opening_hours_converter/day.rb', line 88
def edit_interval(id, interval)
@intervals[id] = interval
end
|
#get_as_minute_array ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/opening_hours_converter/day.rb', line 12
def get_as_minute_array
minute_array = Array.new(MINUTES_MAX + 1, false)
@intervals.each do |interval|
next if interval.nil?
off, start_minute, end_minute = handle_interval(interval)
raise ParseError, "Invalid interval #{interval.inspect}" if start_minute.nil? && end_minute.nil?
(start_minute..end_minute).step do |minute|
minute_array[minute] = off ? 'off' : true
end
end
minute_array
end
|
#get_intervals(clean = false) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/opening_hours_converter/day.rb', line 47
def get_intervals(clean = false)
if clean
minute_array = get_as_minute_array
intervals = []
minute_start = -1
off = false
minute_array.each_with_index do |minute, i|
off, minute_start, intervals = handle_minute(minute, off, minute_start, intervals, i, minute_array)
end
intervals
else
@intervals
end
end
|
#handle_interval(interval) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/opening_hours_converter/day.rb', line 30
def handle_interval(interval)
off = interval.is_off
if off
start_minute = 0
end_minute = MINUTES_MAX
elsif interval.single_day? || interval.max?
start_minute = interval.start
end_minute = interval.end
elsif interval.single_day_end_at_midnight?
start_minute = interval.start
end_minute = MINUTES_MAX
end
[off, start_minute, end_minute]
end
|
#handle_minute(minute, off, minute_start, intervals, i, minute_array) ⇒ Object
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/opening_hours_converter/day.rb', line 63
def handle_minute(minute, off, minute_start, intervals, i, minute_array)
if minute
if i == 0
off = true if minute == 'off'
minute_start = i
elsif minute_start < 0
minute_start = i
elsif i == minute_array.length - 1
intervals << OpeningHoursConverter::Interval.new(0, minute_start, 0, i - 1, off)
minute_start = -1
off = false
end
elsif minute_start >= 0
intervals << OpeningHoursConverter::Interval.new(0, minute_start, 0, i - 1, off)
minute_start = -1
off = false
end
[off, minute_start, intervals]
end
|
#remove_interval(id) ⇒ Object
92
93
94
|
# File 'lib/opening_hours_converter/day.rb', line 92
def remove_interval(id)
@intervals[id] = nil
end
|
#same_as?(day) ⇒ Boolean
110
111
112
|
# File 'lib/opening_hours_converter/day.rb', line 110
def same_as?(day)
day.get_as_minute_array == get_as_minute_array
end
|