Class: IceCube::ValidatedRule

Inherits:
Rule
  • Object
show all
Includes:
IceCube::Validations::Count, IceCube::Validations::Day, IceCube::Validations::DayOfMonth, IceCube::Validations::DayOfWeek, IceCube::Validations::DayOfYear, IceCube::Validations::HourOfDay, IceCube::Validations::MinuteOfHour, IceCube::Validations::MonthOfYear, IceCube::Validations::ScheduleLock, IceCube::Validations::SecondOfMinute, IceCube::Validations::Until
Defined in:
lib/ice_cube/validated_rule.rb

Direct Known Subclasses

DailyRule, HourlyRule, MinutelyRule, MonthlyRule, SecondlyRule, WeeklyRule, YearlyRule

Constant Summary

VALIDATION_ORDER =

Validations ordered for efficiency in sequence of:

  • descending intervals

  • boundary limits

  • base values by cardinality (n = 60, 60, 31, 24, 12, 7)

  • locks by cardinality (n = 365, 60, 60, 31, 24, 12, 7)

  • interval multiplier

[
  :year, :month, :day, :wday, :hour, :min, :sec, :count, :until,
  :base_sec, :base_min, :base_day, :base_hour, :base_month, :base_wday,
  :day_of_year, :second_of_minute, :minute_of_hour, :day_of_month,
  :hour_of_day, :month_of_year, :day_of_week,
  :interval
]

Constants included from IceCube::Validations::Lock

IceCube::Validations::Lock::INTERVALS

Instance Attribute Summary

Attributes inherited from Rule

#uses

Instance Method Summary (collapse)

Methods included from IceCube::Validations::Until

#until, #until_time

Methods included from Deprecated

#deprecated, #deprecated_alias

Methods included from IceCube::Validations::Count

#count, #occurrence_count

Methods included from IceCube::Validations::DayOfYear

#day_of_year

Methods included from IceCube::Validations::MonthOfYear

#month_of_year

Methods included from IceCube::Validations::Day

#day

Methods included from IceCube::Validations::DayOfWeek

#day_of_week

Methods included from IceCube::Validations::DayOfMonth

#day_of_month

Methods included from IceCube::Validations::Lock

#validate

Methods included from IceCube::Validations::SecondOfMinute

#second_of_minute

Methods included from IceCube::Validations::MinuteOfHour

#minute_of_hour

Methods included from IceCube::Validations::HourOfDay

#hour_of_day

Methods included from IceCube::Validations::ScheduleLock

#schedule_lock

Methods inherited from Rule

#==, daily, from_hash, from_yaml, #full_required?, #hash, hourly, minutely, monthly, #on?, #reset, secondly, #terminating?, #to_yaml, weekly, yearly

Constructor Details

- (ValidatedRule) initialize(interval = 1)

A new instance of ValidatedRule



33
34
35
# File 'lib/ice_cube/validated_rule.rb', line 33

def initialize(interval = 1, *)
  @validations = Hash.new
end

Instance Method Details

- (Object) clobber_base_validations(*types)

Remove the specified base validations



94
95
96
97
98
# File 'lib/ice_cube/validated_rule.rb', line 94

def clobber_base_validations(*types)
  types.each do |type|
    @validations.delete(:base_#{type}")
  end
end

- (Object) next_time(time, schedule, closing_time)

Compute the next time after (or including) the specified time in respect to the given schedule



39
40
41
42
43
44
45
46
47
# File 'lib/ice_cube/validated_rule.rb', line 39

def next_time(time, schedule, closing_time)
  @time = time
  @schedule = schedule

  return nil unless find_acceptable_time_before(closing_time)

  @uses += 1 if @time
  @time
end

- (Object) replace_validations_for(key, arr)

Fully replace validations



85
86
87
88
89
90
91
# File 'lib/ice_cube/validated_rule.rb', line 85

def replace_validations_for(key, arr)
  if arr.nil?
    @validations.delete(key)
  else
    @validations[key] = arr
  end
end

- (Object) to_hash



59
60
61
62
63
64
65
66
67
# File 'lib/ice_cube/validated_rule.rb', line 59

def to_hash
  builder = HashBuilder.new(self)
  @validations.each do |name, validations|
    validations.each do |validation|
      validation.build_hash(builder)
    end
  end
  builder.to_hash
end

- (Object) to_ical



69
70
71
72
73
74
75
76
77
# File 'lib/ice_cube/validated_rule.rb', line 69

def to_ical
  builder = IcalBuilder.new
  @validations.each do |name, validations|
    validations.each do |validation|
      validation.build_ical(builder)
    end
  end
  builder.to_s
end

- (Object) to_s



49
50
51
52
53
54
55
56
57
# File 'lib/ice_cube/validated_rule.rb', line 49

def to_s
  builder = StringBuilder.new
  @validations.each do |name, validations|
    validations.each do |validation|
      validation.build_s(builder)
    end
  end
  builder.to_s
end

- (Object) validations_for(key)

Get the collection that contains validations of a certain type



80
81
82
# File 'lib/ice_cube/validated_rule.rb', line 80

def validations_for(key)
  @validations[key] ||= []
end