Class: BBLib::Cron

Inherits:
Object
  • Object
show all
Includes:
Effortless
Defined in:
lib/bblib/classes/cron.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Effortless

#_attrs, included

Class Method Details

.next(exp, count: 1, time: Time.now) ⇒ Object



26
27
28
# File 'lib/bblib/classes/cron.rb', line 26

def self.next(exp, count: 1, time: Time.now)
  BBLib::Cron.new(exp).next(count: count, time: time)
end

.numeralize(exp) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/bblib/classes/cron.rb', line 42

def self.numeralize(exp)
  REPLACE.each do |k, v|
    v.each do |r|
      exp = exp.to_s.gsub(r.to_s, k.to_s)
    end
  end
  exp
end

.prev(exp, count: 1, time: Time.now) ⇒ Object



30
31
32
# File 'lib/bblib/classes/cron.rb', line 30

def self.prev(exp, count: 1, time: Time.now)
  BBLib::Cron.new(exp).prev(count: count, time: time)
end

.valid?(exp) ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/bblib/classes/cron.rb', line 34

def self.valid?(exp)
  !(numeralize(exp) =~ /\A(.*?\s){4,5}.*?\S\z/).nil?
end

Instance Method Details

#expression=(e) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/bblib/classes/cron.rb', line 18

def expression=(e)
  e = e.to_s.downcase
  SPECIAL_EXP.each { |x, v| e = x if v.include?(e) }
  @expression = e
  parse
  e
end

#next(exp = expression, count: 1, time: Time.now) ⇒ Object



8
9
10
11
# File 'lib/bblib/classes/cron.rb', line 8

def next(exp = expression, count: 1, time: Time.now)
  self.expression = exp unless exp == expression
  closest(count: count, time: time, direction: 1)
end

#prev(exp = expression, count: 1, time: Time.now) ⇒ Object



13
14
15
16
# File 'lib/bblib/classes/cron.rb', line 13

def prev(exp = expression, count: 1, time: Time.now)
  self.expression = exp unless exp == expression
  closest(count: count, time: time, direction: -1)
end

#time_match?(time) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
57
58
# File 'lib/bblib/classes/cron.rb', line 51

def time_match?(time)
  (@parts[:minute].empty? || @parts[:minute].include?(time.min)) &&
  (@parts[:hour].empty? || @parts[:hour].include?(time.hour)) &&
  (@parts[:day].empty? || @parts[:day].include?(time.day)) &&
  (@parts[:weekday].empty? || @parts[:weekday].include?(time.wday)) &&
  (@parts[:month].empty? || @parts[:month].include?(time.month)) &&
  (@parts[:year].empty? || @parts[:year].include?(time.year))
end

#valid?(exp) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/bblib/classes/cron.rb', line 38

def valid?(exp)
  BBLib::Cron.valid?(exp)
end