class IceCube::Validations::DayOfWeek::Validation
Attributes
Public Class Methods
Source
# File lib/ice_cube/validations/day_of_week.rb, line 17 def initialize(day, occ) raise ArgumentError, "Integer occurrence value required" unless occ.is_a?(Integer) raise ArgumentError, "Invalid day_of_week occurrence: #{occ.inspect}" if occ.zero? || occ.abs > 5 @day = day @occ = occ end
Public Instance Methods
Source
# File lib/ice_cube/validations/day_of_week.rb, line 55 def build_hash(builder) builder.validations[:day_of_week] ||= {} arr = (builder.validations[:day_of_week][day] ||= []) arr << occ end
Source
# File lib/ice_cube/validations/day_of_week.rb, line 61 def build_ical(builder) ical_day = IcalBuilder.fixnum_to_ical_day(day) # Delete any with this day and no occ first builder["BYDAY"].delete_if { |d| d == ical_day } builder["BYDAY"] << "#{occ}#{ical_day}" end
Source
# File lib/ice_cube/validations/day_of_week.rb, line 47 def build_s(builder) builder.piece(:day_of_week) << IceCube::I18n.t( "ice_cube.days_of_week", segments: StringBuilder.nice_number(occ), day: IceCube::I18n.t("date.day_names")[day] ) end
Source
# File lib/ice_cube/validations/day_of_week.rb, line 29 def dst_adjust? true end
Source
# File lib/ice_cube/validations/day_of_week.rb, line 33 def validate(step_time, start_time) wday = step_time.wday offset = (day < wday) ? (7 - wday + day) : (day - wday) wrapper = TimeUtil::TimeWrapper.new(step_time) wrapper.add :day, offset loop do which_occ, num_occ = TimeUtil.which_occurrence_in_month(wrapper.to_time, day) this_occ = (occ < 0) ? (num_occ + occ + 1) : occ break offset if which_occ == this_occ wrapper.add :day, 7 offset += 7 end end