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

inspect()
Alias for: to_cron_s
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
Also aliased as: to_s, inspect
to_s()
Alias for: to_cron_s

Private Instance Methods

[](field)
Alias for: get
[]=(field, value)
Alias for: set
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