module IceCube::Validations::HourOfDay

Public Instance Methods

hour_of_day(*hours) click to toggle source

Add hour of day validations

# File lib/ice_cube/validations/hour_of_day.rb, line 6
def hour_of_day(*hours)
  hours.flatten.each do |hour|
    unless hour.is_a?(Integer)
      raise ArgumentError, "expecting Integer value for hour, got #{hour.inspect}"
    end

    verify_alignment(hour, :hour, :hour_of_day) { |error| raise error }

    validations_for(:hour_of_day) << Validation.new(hour)
  end
  clobber_base_validations(:hour)
  self
end
realign(opening_time, start_time) click to toggle source
Calls superclass method
# File lib/ice_cube/validations/hour_of_day.rb, line 20
def realign(opening_time, start_time)
  return super unless validations[:hour_of_day]
  freq = base_interval_validation.interval

  first_hour = Array(validations[:hour_of_day]).min_by(&:value)
  time = TimeUtil::TimeWrapper.new(start_time, false)
  if freq > 1 && base_interval_validation.type == :hour
    offset = first_hour.validate(opening_time, start_time)
    time.add(:hour, offset - freq)
  else
    time.hour = first_hour.value
  end

  super opening_time, time.to_time
end