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