Class: IceCube::Rule
- Inherits:
-
Object
- Object
- IceCube::Rule
- Defined in:
- lib/ice_cube/rule.rb
Direct Known Subclasses
Constant Summary collapse
- INTERVAL_TYPES =
[ :secondly, :minutely, :hourly, :daily, :weekly, :monthly, :yearly ]
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
- #==(other) ⇒ Object
- #hash ⇒ Object
- #next_time(time, schedule, closing_time) ⇒ Object
- #on?(time, schedule) ⇒ Boolean
- #reset ⇒ Object
-
#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.
12 13 14 |
# File 'lib/ice_cube/rule.rb', line 12 def uses @uses end |
Class Method Details
.daily(interval = 1) ⇒ Object
Daily Rule
126 127 128 |
# File 'lib/ice_cube/rule.rb', line 126 def daily(interval = 1) DailyRule.new(interval) end |
.from_hash(original_hash) ⇒ Object
Convert from a hash and create a rule
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/ice_cube/rule.rb', line 64 def from_hash(original_hash) hash = IceCube::FlexibleHash.new original_hash unless hash[:rule_type] && match = hash[:rule_type].match(/\:\:(.+?)Rule/) raise ArgumentError, 'Invalid rule type' end interval_type = match[1].downcase.to_sym unless INTERVAL_TYPES.include?(interval_type) raise ArgumentError, "Invalid rule frequency type: #{match[1]}" end rule = IceCube::Rule.send(interval_type, hash[:interval] || 1) if match[1] == "Weekly" rule.interval(hash[:interval] || 1, TimeUtil.wday_to_sym(hash[:week_start] || 0)) end rule.until(TimeUtil.deserialize_time(hash[:until])) if hash[:until] rule.count(hash[:count]) if hash[:count] hash[:validations] && hash[:validations].each do |name, args| apply_validation(rule, name, args) 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
121 122 123 |
# File 'lib/ice_cube/rule.rb', line 121 def hourly(interval = 1) HourlyRule.new(interval) end |
.minutely(interval = 1) ⇒ Object
Minutely Rule
116 117 118 |
# File 'lib/ice_cube/rule.rb', line 116 def minutely(interval = 1) MinutelyRule.new(interval) end |
.monthly(interval = 1) ⇒ Object
Monthly Rule
136 137 138 |
# File 'lib/ice_cube/rule.rb', line 136 def monthly(interval = 1) MonthlyRule.new(interval) end |
.secondly(interval = 1) ⇒ Object
Secondly Rule
111 112 113 |
# File 'lib/ice_cube/rule.rb', line 111 def secondly(interval = 1) SecondlyRule.new(interval) end |
.weekly(interval = 1, week_start = :sunday) ⇒ Object
Weekly Rule
131 132 133 |
# File 'lib/ice_cube/rule.rb', line 131 def weekly(interval = 1, week_start = :sunday) WeeklyRule.new(interval, week_start) end |
.yearly(interval = 1) ⇒ Object
Yearly Rule
141 142 143 |
# File 'lib/ice_cube/rule.rb', line 141 def yearly(interval = 1) YearlyRule.new(interval) end |
Instance Method Details
#==(other) ⇒ Object
22 23 24 25 |
# File 'lib/ice_cube/rule.rb', line 22 def ==(other) return false unless other.is_a? Rule hash == other.hash end |
#hash ⇒ Object
27 28 29 |
# File 'lib/ice_cube/rule.rb', line 27 def hash to_hash.hash end |
#next_time(time, schedule, closing_time) ⇒ Object
54 55 |
# File 'lib/ice_cube/rule.rb', line 54 def next_time(time, schedule, closing_time) end |
#on?(time, schedule) ⇒ Boolean
57 58 59 |
# File 'lib/ice_cube/rule.rb', line 57 def on?(time, schedule) next_time(time, schedule, time).to_i == time.to_i end |
#reset ⇒ Object
14 15 |
# File 'lib/ice_cube/rule.rb', line 14 def reset end |
#terminating? ⇒ Boolean
Is this a terminating schedule?
18 19 20 |
# File 'lib/ice_cube/rule.rb', line 18 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 overridden 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 |