class IceCube::Rule
Attributes
uses[R]
Public Class Methods
daily(interval = 1)
click to toggle source
Daily Rule
# File lib/ice_cube/rule.rb, line 100 def daily(interval = 1) DailyRule.new(interval) end
from_hash(original_hash)
click to toggle source
Convert from a hash and create a rule
# File lib/ice_cube/rule.rb, line 50 def self.from_hash(original_hash) hash = IceCube::FlexibleHash.new original_hash return nil unless match = hash[:rule_type].match(/\:\:(.+?)Rule/) rule = IceCube::Rule.send(match[1].downcase.to_sym, hash[:interval] || 1) rule.interval(hash[:interval] || 1, TimeUtil.wday_to_sym(hash[:week_start] || 0)) if match[1] == "Weekly" rule.until(TimeUtil.deserialize_time(hash[:until])) if hash[:until] rule.count(hash[:count]) if hash[:count] hash[:validations] && hash[:validations].each do |key, value| key = key.to_sym unless key.is_a?(Symbol) value.is_a?(Array) ? rule.send(key, *value) : rule.send(key, value) end rule end
from_ical(ical)
click to toggle source
Convert from ical string and create a rule
# File lib/ice_cube/rule.rb, line 31 def self.from_ical(ical) IceCube::IcalParser.rule_from_ical(ical) end
from_yaml(yaml)
click to toggle source
From yaml
# File lib/ice_cube/rule.rb, line 41 def self.from_yaml(yaml) from_hash YAML::load(yaml) end
hourly(interval = 1)
click to toggle source
Hourly Rule
# File lib/ice_cube/rule.rb, line 95 def hourly(interval = 1) HourlyRule.new(interval) end
minutely(interval = 1)
click to toggle source
Minutely Rule
# File lib/ice_cube/rule.rb, line 90 def minutely(interval = 1) MinutelyRule.new(interval) end
monthly(interval = 1)
click to toggle source
Monthly Rule
# File lib/ice_cube/rule.rb, line 110 def monthly(interval = 1) MonthlyRule.new(interval) end
secondly(interval = 1)
click to toggle source
Secondly Rule
# File lib/ice_cube/rule.rb, line 85 def secondly(interval = 1) SecondlyRule.new(interval) end
weekly(interval = 1, week_start = :sunday)
click to toggle source
Weekly Rule
# File lib/ice_cube/rule.rb, line 105 def weekly(interval = 1, week_start = :sunday) WeeklyRule.new(interval, week_start) end
yearly(interval = 1)
click to toggle source
Yearly Rule
# File lib/ice_cube/rule.rb, line 115 def yearly(interval = 1) YearlyRule.new(interval) end
Public Instance Methods
==(rule)
click to toggle source
# File lib/ice_cube/rule.rb, line 14 def ==(rule) if rule.is_a? Rule hash = to_hash hash && hash == rule.to_hash end end
full_required?()
click to toggle source
Whether this rule requires a full run
# File lib/ice_cube/rule.rb, line 77 def full_required? !@count.nil? end
hash()
click to toggle source
Calls superclass method
# File lib/ice_cube/rule.rb, line 21 def hash h = to_hash h.nil? ? super : h.hash end
next_time(time, schedule, closing_time)
click to toggle source
# File lib/ice_cube/rule.rb, line 69 def next_time(time, schedule, closing_time) end
on?(time, schedule)
click to toggle source
# File lib/ice_cube/rule.rb, line 72 def on?(time, schedule) next_time(time, schedule, time).to_i == time.to_i end
reset()
click to toggle source
Reset the uses on the rule to 0
# File lib/ice_cube/rule.rb, line 65 def reset @uses = 0 end
terminating?()
click to toggle source
Is this a terminating schedule?
# File lib/ice_cube/rule.rb, line 10 def terminating? until_time || occurrence_count end
to_hash()
click to toggle source
# File lib/ice_cube/rule.rb, line 45 def to_hash raise MethodNotImplemented, "Expected to be overridden by subclasses" end
to_ical()
click to toggle source
# File lib/ice_cube/rule.rb, line 26 def to_ical raise MethodNotImplemented, "Expected to be overrridden by subclasses" end
to_yaml(*args)
click to toggle source
Yaml implementation
# File lib/ice_cube/rule.rb, line 36 def to_yaml(*args) YAML::dump(to_hash, *args) end