class Elected::Scheduler::Schedule
Constants
- ABBR_DAYNAMES
- ABBR_MONTHNAMES
- DAYNAMES
- FIELDS
- MAX_NUMBERS
- MIN_NUMBERS
- MONTHNAMES
Public Class Methods
defaults()
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 18 def self.defaults @defaults ||= { seconds: [0] } end
new(options = {})
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 22 def initialize(options = {}) @options = options setup *(FIELDS.keys) end
Public Instance Methods
matches?(time)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 27 def matches?(time) FIELDS.all? { |field, meth| match? field, time.send(meth) } end
to_cron_s()
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 31 def to_cron_s FIELDS.keys.map { |field| get_cron_s(field) }.join(' ') end
Private Instance Methods
convert(field, value)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 67 def convert(field, value) return value if value === :all ary = simplify_enum Array(value).flatten case field when :seconds, :minutes, :hours, :days convert_numbers field, ary when :months convert_numbers :months, ary, :convert_month_name when :dows convert_numbers :dows, ary, :convert_dow_name end end
convert_dow_name(value)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 99 def convert_dow_name(value) return value unless value.is_a?(String) || value.is_a?(Symbol) [ABBR_DAYNAMES, DAYNAMES].map { |ary| ary.index value.to_s.downcase }.compact.first end
convert_month_name(value)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 93 def convert_month_name(value) return value unless value.is_a?(String) || value.is_a?(Symbol) [ABBR_MONTHNAMES, MONTHNAMES].map { |ary| ary.index value.to_s.downcase }.compact.first end
convert_numbers(field, ary, converter_name = nil)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 85 def convert_numbers(field, ary, converter_name = nil) ary.map do |x| converter_name ? send(converter_name, x) : x end.select do |x| x.is_a?(Integer) && x >= MIN_NUMBERS[field] && x <= MAX_NUMBERS[field] end.uniq.sort end
default(field)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 57 def default(field) self.class.defaults[field] || :all end
get(field)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 40 def get(field) instance_variable_get "@#{field}" end
Also aliased as: []
get_cron_s(field)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 46 def get_cron_s(field) value = get(field) value === :all ? '*' : value.map { |x| x.to_s }.join(',') end
match?(field, exp_value)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 105 def match?(field, exp_value) value = get field return true if value === :all value.include? exp_value end
set(field, value)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 51 def set(field, value) instance_variable_set "@#{field}", convert(field, value) end
Also aliased as: []=
setup(*fields)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 61 def setup(*fields) fields.each do |field| set field, @options.fetch(field, default(field)) end end
simplify_enum(ary)
click to toggle source
# File lib/elected/scheduler/schedule.rb, line 81 def simplify_enum(ary) ary.map { |x| x.is_a?(Range) ? x.to_a : x }.flatten end