class OpeningHoursConverter::Day
Attributes
intervals[RW]
Public Class Methods
new()
click to toggle source
# File lib/opening_hours_converter/day.rb, line 8 def initialize @intervals = [] end
Public Instance Methods
add_interval(interval)
click to toggle source
# File lib/opening_hours_converter/day.rb, line 83 def add_interval(interval) @intervals << interval @intervals.length - 1 end
clear_intervals()
click to toggle source
# File lib/opening_hours_converter/day.rb, line 96 def clear_intervals @intervals = [] end
copy_intervals(intervals)
click to toggle source
# 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)
click to toggle source
# File lib/opening_hours_converter/day.rb, line 88 def edit_interval(id, interval) @intervals[id] = interval end
get_as_minute_array()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# File lib/opening_hours_converter/day.rb, line 92 def remove_interval(id) @intervals[id] = nil end
same_as?(day)
click to toggle source
# File lib/opening_hours_converter/day.rb, line 110 def same_as?(day) day.get_as_minute_array == get_as_minute_array end