class TimeKeeper::TimeRangeCollection
Constants
- TIME_FORMAT_REGEX
Attributes
time_ranges[RW]
time_ranges_str[RW]
Public Class Methods
new(time_ranges_str)
click to toggle source
# File lib/time_keeper/time_range_collection.rb, line 10 def initialize(time_ranges_str) @time_ranges_str = time_ranges_str.strip.gsub(/\s*(-|to)\s*/, "-") end
Public Instance Methods
parse()
click to toggle source
# File lib/time_keeper/time_range_collection.rb, line 14 def parse spans = @time_ranges_str.split(/\s*\n\s*/).map(&:strip) previous_time_range = nil @time_ranges = spans.inject([]) do |result, span| time_range = TimeKeeper::TimeRange.new(span.strip).parse if previous_time_range time_range.start_day = (time_range.start_time.in_seconds < previous_time_range.end_time.in_seconds ? previous_time_range.end_day + 1 : previous_time_range.end_day) time_range.end_day = time_range.start_day + time_range.days_elapsed end result << time_range previous_time_range = time_range result end self end