Class: IceCube::ValidatedRule
- Includes:
- IceCube::Validations::Count, IceCube::Validations::ScheduleLock, IceCube::Validations::Until
- Defined in:
- lib/ice_cube/validated_rule.rb
Direct Known Subclasses
DailyRule, HourlyRule, MinutelyRule, MonthlyRule, SecondlyRule, WeeklyRule, YearlyRule
Constant Summary collapse
- 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 inherited from Rule
Instance Attribute Summary collapse
-
#validations ⇒ Object
readonly
Returns the value of attribute validations.
Attributes inherited from Rule
Instance Method Summary collapse
- #base_interval_validation ⇒ Object
-
#clobber_base_validations(*types) ⇒ Object
Remove the specified base validations.
- #full_required? ⇒ Boolean
-
#initialize(interval = 1) ⇒ ValidatedRule
constructor
A new instance of ValidatedRule.
-
#next_time(time, start_time, closing_time) ⇒ Object
Compute the next time after (or including) the specified time in respect to the given start time.
- #other_interval_validations ⇒ Object
- #realign(opening_time, start_time) ⇒ Object
-
#replace_validations_for(key, arr) ⇒ Object
Fully replace validations.
-
#reset ⇒ Object
Reset the uses on the rule to 0.
- #to_hash ⇒ Object
- #to_ical ⇒ Object
- #to_s ⇒ Object
-
#validations_for(key) ⇒ Object
Get the collection that contains validations of a certain type.
Methods included from IceCube::Validations::Until
Methods included from Deprecated
#deprecated, #deprecated_alias, schedule_options
Methods included from IceCube::Validations::Count
Methods included from IceCube::Validations::ScheduleLock
Methods inherited from Rule
#==, daily, from_hash, from_ical, from_yaml, #hash, hourly, minutely, monthly, #on?, secondly, #terminating?, #to_yaml, weekly, yearly
Constructor Details
#initialize(interval = 1) ⇒ ValidatedRule
Returns a new instance of ValidatedRule.
28 29 30 |
# File 'lib/ice_cube/validated_rule.rb', line 28 def initialize(interval = 1) @validations = Hash.new end |
Instance Attribute Details
#validations ⇒ Object (readonly)
Returns the value of attribute validations.
26 27 28 |
# File 'lib/ice_cube/validated_rule.rb', line 26 def validations @validations end |
Instance Method Details
#base_interval_validation ⇒ Object
39 40 41 |
# File 'lib/ice_cube/validated_rule.rb', line 39 def base_interval_validation @validations[:interval].first end |
#clobber_base_validations(*types) ⇒ Object
Remove the specified base validations
115 116 117 118 119 |
# File 'lib/ice_cube/validated_rule.rb', line 115 def clobber_base_validations(*types) types.each do |type| @validations.delete(:"base_#{type}") end end |
#full_required? ⇒ Boolean
66 67 68 |
# File 'lib/ice_cube/validated_rule.rb', line 66 def full_required? !occurrence_count.nil? end |
#next_time(time, start_time, closing_time) ⇒ Object
Compute the next time after (or including) the specified time in respect to the given start time
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ice_cube/validated_rule.rb', line 49 def next_time(time, start_time, closing_time) @time = time unless @start_time @start_time = realign(time, start_time) @time = @start_time if @time < @start_time end return nil unless find_acceptable_time_before(closing_time) @uses += 1 if @time @time end |
#other_interval_validations ⇒ Object
43 44 45 |
# File 'lib/ice_cube/validated_rule.rb', line 43 def other_interval_validations Array(@validations[base_interval_validation.type]) end |
#realign(opening_time, start_time) ⇒ Object
62 63 64 |
# File 'lib/ice_cube/validated_rule.rb', line 62 def realign(opening_time, start_time) start_time end |
#replace_validations_for(key, arr) ⇒ Object
Fully replace validations
106 107 108 109 110 111 112 |
# File 'lib/ice_cube/validated_rule.rb', line 106 def replace_validations_for(key, arr) if arr.nil? @validations.delete(key) else @validations[key] = arr end end |
#reset ⇒ Object
Reset the uses on the rule to 0
33 34 35 36 37 |
# File 'lib/ice_cube/validated_rule.rb', line 33 def reset @time = nil @start_time = nil @uses = 0 end |
#to_hash ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/ice_cube/validated_rule.rb', line 80 def to_hash builder = HashBuilder.new(self) @validations.each_value do |validations| validations.each do |validation| validation.build_hash(builder) end end builder.to_hash end |
#to_ical ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/ice_cube/validated_rule.rb', line 90 def to_ical builder = IcalBuilder.new @validations.each_value do |validations| validations.each do |validation| validation.build_ical(builder) end end builder.to_s end |
#to_s ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/ice_cube/validated_rule.rb', line 70 def to_s builder = StringBuilder.new @validations.each_value do |validations| validations.each do |validation| validation.build_s(builder) end end builder.to_s end |
#validations_for(key) ⇒ Object
Get the collection that contains validations of a certain type
101 102 103 |
# File 'lib/ice_cube/validated_rule.rb', line 101 def validations_for(key) @validations[key] ||= [] end |