class Cronline::CronField

Public Class Methods

new(field_expression, absolute_min, absolute_max) click to toggle source
# File lib/cronline/cron_field.rb, line 11
def initialize(field_expression, absolute_min, absolute_max)
  @absolute_min = absolute_min
  @absolute_max = absolute_max
  if field_expression == CronField.wildcard
    #Wild
    @wild = true
    @range = Integer(absolute_min)..Integer(absolute_max)
  elsif field_expression.include?('-')
    #Range
    min = Integer(field_expression.split('-')[0])
    max = Integer(field_expression.split('-')[1])
    @range = min..max
  elsif field_expression.include?(',')
    #Value list
    @range = field_expression.split(',').map do |number_expression|
      Integer(number_expression)
    end
  elsif field_expression.include?('/')
    #Increment
    increment_start = field_expression.split('/')[0]
    increment_step = field_expression.split('/')[1]
    @range = (Integer(increment_start)..absolute_max).step(Integer(increment_step))
  elsif field_expression == '?'
    #Disabled
    @range = []
  elsif field_expression[-1, 1] == 'L'
    #Last
    @range = [Integer(field_expression.sub!('L', ''))]
  else
    #Single
    @range = [Integer(field_expression)]
  end
end
wildcard() click to toggle source
# File lib/cronline/cron_field.rb, line 7
def self.wildcard
  '*'
end

Public Instance Methods

range(time = nil) click to toggle source
# File lib/cronline/cron_field.rb, line 45
def range(time = nil)
  @range
end
test?(time) click to toggle source
# File lib/cronline/cron_field.rb, line 49
def test?(time)
  range(time).include?(time_field(time))
end
time_field(time) click to toggle source
# File lib/cronline/cron_field.rb, line 53
def time_field(time)
  fail 'time_field must be implemented'
end