Class: IceCube::Rule
- Inherits:
-
Object
- Object
- IceCube::Rule
- Defined in:
- lib/ice_cube/rule.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#uses ⇒ Object
readonly
Returns the value of attribute uses.
Class Method Summary collapse
-
.daily(interval = 1) ⇒ Object
Daily Rule.
-
.from_hash(original_hash) ⇒ Object
Convert from a hash and create a rule.
-
.from_ical(ical) ⇒ Object
Convert from ical string and create a rule.
-
.from_yaml(yaml) ⇒ Object
From yaml.
-
.hourly(interval = 1) ⇒ Object
Hourly Rule.
-
.minutely(interval = 1) ⇒ Object
Minutely Rule.
-
.monthly(interval = 1) ⇒ Object
Monthly Rule.
-
.secondly(interval = 1) ⇒ Object
Secondly Rule.
-
.weekly(interval = 1, week_start = :sunday) ⇒ Object
Weekly Rule.
-
.yearly(interval = 1) ⇒ Object
Yearly Rule.
Instance Method Summary collapse
- #==(rule) ⇒ Object
-
#full_required? ⇒ Boolean
Whether this rule requires a full run.
- #hash ⇒ Object
- #next_time(time, schedule, closing_time) ⇒ Object
- #on?(time, schedule) ⇒ Boolean
-
#overrides_duration? ⇒ Boolean
Does this rule override the schedule’s duration?.
-
#reset ⇒ Object
Reset the uses on the rule to 0.
-
#terminating? ⇒ Boolean
Is this a terminating schedule?.
- #to_hash ⇒ Object
- #to_ical ⇒ Object
-
#to_yaml(*args) ⇒ Object
Yaml implementation.
Instance Attribute Details
#uses ⇒ Object (readonly)
Returns the value of attribute uses.
7 8 9 |
# File 'lib/ice_cube/rule.rb', line 7 def uses @uses end |
Class Method Details
.daily(interval = 1) ⇒ Object
Daily Rule
105 106 107 |
# File 'lib/ice_cube/rule.rb', line 105 def daily(interval = 1) DailyRule.new(interval) end |
.from_hash(original_hash) ⇒ Object
Convert from a hash and create a rule
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ice_cube/rule.rb', line 55 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) ⇒ Object
Convert from ical string and create a rule
36 37 38 |
# File 'lib/ice_cube/rule.rb', line 36 def self.from_ical(ical) IceCube::IcalParser.rule_from_ical(ical) end |
.from_yaml(yaml) ⇒ Object
From yaml
46 47 48 |
# File 'lib/ice_cube/rule.rb', line 46 def self.from_yaml(yaml) from_hash YAML::load(yaml) end |
.hourly(interval = 1) ⇒ Object
Hourly Rule
100 101 102 |
# File 'lib/ice_cube/rule.rb', line 100 def hourly(interval = 1) HourlyRule.new(interval) end |
.minutely(interval = 1) ⇒ Object
Minutely Rule
95 96 97 |
# File 'lib/ice_cube/rule.rb', line 95 def minutely(interval = 1) MinutelyRule.new(interval) end |
.monthly(interval = 1) ⇒ Object
Monthly Rule
115 116 117 |
# File 'lib/ice_cube/rule.rb', line 115 def monthly(interval = 1) MonthlyRule.new(interval) end |
.secondly(interval = 1) ⇒ Object
Secondly Rule
90 91 92 |
# File 'lib/ice_cube/rule.rb', line 90 def secondly(interval = 1) SecondlyRule.new(interval) end |
.weekly(interval = 1, week_start = :sunday) ⇒ Object
Weekly Rule
110 111 112 |
# File 'lib/ice_cube/rule.rb', line 110 def weekly(interval = 1, week_start = :sunday) WeeklyRule.new(interval, week_start) end |
.yearly(interval = 1) ⇒ Object
Yearly Rule
120 121 122 |
# File 'lib/ice_cube/rule.rb', line 120 def yearly(interval = 1) YearlyRule.new(interval) end |
Instance Method Details
#==(rule) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/ice_cube/rule.rb', line 19 def ==(rule) if rule.is_a? Rule hash = to_hash hash && hash == rule.to_hash end end |
#full_required? ⇒ Boolean
Whether this rule requires a full run
82 83 84 |
# File 'lib/ice_cube/rule.rb', line 82 def full_required? !@count.nil? end |
#hash ⇒ Object
26 27 28 29 |
# File 'lib/ice_cube/rule.rb', line 26 def hash h = to_hash h.nil? ? super : h.hash end |
#next_time(time, schedule, closing_time) ⇒ Object
74 75 |
# File 'lib/ice_cube/rule.rb', line 74 def next_time(time, schedule, closing_time) end |
#on?(time, schedule) ⇒ Boolean
77 78 79 |
# File 'lib/ice_cube/rule.rb', line 77 def on?(time, schedule) next_time(time, schedule, time).to_i == time.to_i end |
#overrides_duration? ⇒ Boolean
Does this rule override the schedule’s duration?
15 16 17 |
# File 'lib/ice_cube/rule.rb', line 15 def overrides_duration? !duration.nil? end |
#reset ⇒ Object
Reset the uses on the rule to 0
70 71 72 |
# File 'lib/ice_cube/rule.rb', line 70 def reset @uses = 0 end |
#terminating? ⇒ Boolean
Is this a terminating schedule?
10 11 12 |
# File 'lib/ice_cube/rule.rb', line 10 def terminating? until_time || occurrence_count end |
#to_hash ⇒ Object
50 51 52 |
# File 'lib/ice_cube/rule.rb', line 50 def to_hash raise MethodNotImplemented, "Expected to be overridden by subclasses" end |
#to_ical ⇒ Object
31 32 33 |
# File 'lib/ice_cube/rule.rb', line 31 def to_ical raise MethodNotImplemented, "Expected to be overrridden by subclasses" end |
#to_yaml(*args) ⇒ Object
Yaml implementation
41 42 43 |
# File 'lib/ice_cube/rule.rb', line 41 def to_yaml(*args) YAML::dump(to_hash, *args) end |