class IceCube::Validations::DayOfWeek::Validation
Attributes
day[R]
occ[R]
Public Class Methods
new(day, occ)
click to toggle source
# File lib/ice_cube/validations/day_of_week.rb, line 20 def initialize(day, occ) @day = day @occ = occ end
Public Instance Methods
build_hash(builder)
click to toggle 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
build_ical(builder)
click to toggle 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
build_s(builder)
click to toggle 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
dst_adjust?()
click to toggle source
# File lib/ice_cube/validations/day_of_week.rb, line 29 def dst_adjust? true end
type()
click to toggle source
# File lib/ice_cube/validations/day_of_week.rb, line 25 def type :day end
validate(step_time, start_time)
click to toggle 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