class CronZoneConverter::Duplicator
Attributes
base[R]
changes[R]
parts[R]
Public Class Methods
change(base, changes = {})
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 5 def self.change(base, changes = {}) new(base, changes).change end
new(base, changes = {})
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 9 def initialize(base, changes = {}) @base = ::Fugit::Cron.new base @changes = changes @parts = @base.to_h end
Public Instance Methods
change()
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 15 def change return base.dup if changes.empty? update_hours update_weekdays update_monthdays ::Fugit::Cron.new line end
Private Instance Methods
line()
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 62 def line [ parts[:seconds] == [0] ? nil : (parts[:seconds] || ['*']).join(','), (parts[:minutes] || ['*']).join(','), (parts[:hours] || ['*']).join(','), (parts[:monthdays] || ['*']).join(','), (parts[:months] || ['*']).join(','), (parts[:weekdays] || [['*']]).map { |d| d.compact.join('#') }.join(','), base.zone ].compact.join(' ') end
update_hours()
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 29 def update_hours parts[:hours] = [changes[:hour]] if changes[:hour] parts[:hours] = changes[:hours] if changes[:hours] parts[:hours] = parts[:hours] + [changes[:add_hour]] if changes[:add_hour] end
update_monthdays()
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 48 def update_monthdays parts[:monthdays] = [[changes[:dom]]] if changes[:dom] parts[:monthdays] = (parts[:monthdays] || []) + [changes[:add_dom]] if changes[:add_dom] return unless changes[:day_diff] parts[:monthdays]&.map! do |x| v = x + changes[:day_diff] raise Error, 'cannot change month' if v < 0 v = 31 if v > 31 v end end
update_weekdays()
click to toggle source
# File lib/cron_zone_converter/duplicator.rb, line 35 def update_weekdays parts[:weekdays] = [[changes[:dow]]] if changes[:dow] parts[:weekdays] = parts[:weekdays] + [[changes[:add_dow]]] if changes[:add_dow] return unless changes[:day_diff] parts[:weekdays]&.map! do |x| v = x.first + changes[:day_diff] v -= 6 if v > 6 v = 6 + v if v < 0 [v] end end