class When::Cron::Validator

Constants

MONTHS
NOT_BASIC_CHARS
NOT_BASIC_OR_LETTERS
WDAYS

Attributes

cron[R]

Public Class Methods

new(cron) click to toggle source
# File lib/when-cron/cron/validator.rb, line 44
def initialize(cron)
  @cron = cron
end
valid?(cron) click to toggle source
# File lib/when-cron/cron/validator.rb, line 32
def self.valid?(cron)
  v = new(cron)
  v.correct_number_of_parts? &&
  v.min_correct? &&
  v.hour_correct? &&
  v.day_correct? &&
  v.month_correct? &&
  v.wday_correct?
end

Public Instance Methods

correct_number_of_parts?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 72
def correct_number_of_parts?
  cron.split(' ').count == 5
end
day() click to toggle source
# File lib/when-cron/cron/validator.rb, line 60
def day
  parts[2]
end
day_correct?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 86
def day_correct?
  correct_range?(day, 1..31) &&
  !(day =~ NOT_BASIC_CHARS)
end
hour() click to toggle source
# File lib/when-cron/cron/validator.rb, line 56
def hour
  parts[1]
end
hour_correct?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 81
def hour_correct?
  correct_range?(hour, 0..23) &&
  !(hour =~ NOT_BASIC_CHARS)
end
min() click to toggle source
# File lib/when-cron/cron/validator.rb, line 52
def min
  parts[0]
end
min_correct?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 76
def min_correct?
  correct_range?(min, 0..59) &&
  !(min =~ NOT_BASIC_CHARS)
end
month() click to toggle source
# File lib/when-cron/cron/validator.rb, line 64
def month
  parts[3]
end
month_correct?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 91
def month_correct?
  correct_range?(month, 1..12) &&
  month.scan(/[a-zA-Z]+/).all? { |w| MONTHS[w.upcase] } &&
  !(month =~ NOT_BASIC_OR_LETTERS)
end
parts() click to toggle source
# File lib/when-cron/cron/validator.rb, line 48
def parts
  @parts ||= cron.split(' ')
end
wday() click to toggle source
# File lib/when-cron/cron/validator.rb, line 68
def wday
  parts[4]
end
wday_correct?() click to toggle source
# File lib/when-cron/cron/validator.rb, line 97
def wday_correct?
  correct_range?(wday, 0..6) &&
  wday.scan(/[a-zA-Z]+/).all? { |w| WDAYS[w.upcase] } &&
  !(wday =~ NOT_BASIC_OR_LETTERS)
end

Private Instance Methods

correct_range?(part, range) click to toggle source
# File lib/when-cron/cron/validator.rb, line 105
def correct_range?(part, range)
  part.scan(/\d+/).all? do |digits|
    range === digits.to_i
  end
end