Class: Cronline::CronField

Inherits:
Object
  • Object
show all
Defined in:
lib/cronline/cron_field.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(field_expression, absolute_min, absolute_max) ⇒ CronField

Returns a new instance of CronField.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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

Class Method Details

.wildcardObject



7
8
9
# File 'lib/cronline/cron_field.rb', line 7

def self.wildcard
  '*'
end

Instance Method Details

#range(time = nil) ⇒ Object



45
46
47
# File 'lib/cronline/cron_field.rb', line 45

def range(time = nil)
  @range
end

#test?(time) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/cronline/cron_field.rb', line 49

def test?(time)
  range(time).include?(time_field(time))
end

#time_field(time) ⇒ Object



53
54
55
# File 'lib/cronline/cron_field.rb', line 53

def time_field(time)
  fail 'time_field must be implemented'
end