class Chronic::RepeaterTime
def initialize(time, options = {})
def initialize(time, options = {}) @current_time = nil @options = options time_parts = time.split(':') raise ArgumentError, "Time cannot have more than 4 groups of ':'" if time_parts.count > 4 if time_parts.first.length > 2 and time_parts.count == 1 if time_parts.first.length > 4 second_index = time_parts.first.length - 2 time_parts.insert(1, time_parts.first[second_index..time_parts.first.length]) time_parts[0] = time_parts.first[0..second_index - 1] end minute_index = time_parts.first.length - 2 time_parts.insert(1, time_parts.first[minute_index..time_parts.first.length]) time_parts[0] = time_parts.first[0..minute_index - 1] end ambiguous = false hours = time_parts.first.to_i if @options[:hours24].nil? or (not @options[:hours24].nil? and @options[:hours24] != true) ambiguous = true if (time_parts.first.length == 1 and hours > 0) or (hours >= 10 and hours <= 12) or (@options[:hours24] == false and hours > 0) hours = 0 if hours == 12 and ambiguous end hours *= 60 * 60 minutes = 0 seconds = 0 subseconds = 0 minutes = time_parts[1].to_i * 60 if time_parts.count > 1 seconds = time_parts[2].to_i if time_parts.count > 2 subseconds = time_parts[3].to_f / (10 ** time_parts[3].length) if time_parts.count > 3 @type = Tick.new(hours + minutes + seconds + subseconds, ambiguous) end