Class: Clockwork::At

Inherits:
Object
  • Object
show all
Defined in:
lib/clockwork/at.rb

Defined Under Namespace

Classes: FailedToParse

Constant Summary collapse

NOT_SPECIFIED =
nil
WDAYS =
%w[sunday monday tuesday wednesday thursday friday saturday].map do |w|
  [w, w.capitalize, w[0...3], w[0...3].capitalize]
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(min, hour = NOT_SPECIFIED, wday = NOT_SPECIFIED) ⇒ At

Returns a new instance of At.



34
35
36
37
38
39
40
41
42
43
# File 'lib/clockwork/at.rb', line 34

def initialize(min, hour=NOT_SPECIFIED, wday=NOT_SPECIFIED)
  if (min != NOT_SPECIFIED && (min < 0 || min > 59)) ||
      (hour != NOT_SPECIFIED && (hour < 0 || hour > 23)) ||
      (wday != NOT_SPECIFIED && (wday < 0 || wday > 6))
    raise ArgumentError
  end
  @min = min
  @hour = hour
  @wday = wday
end

Instance Attribute Details

#hour=(value) ⇒ Object (writeonly)

Sets the attribute hour

Parameters:

  • value

    the value to set the attribute hour to.



32
33
34
# File 'lib/clockwork/at.rb', line 32

def hour=(value)
  @hour = value
end

#min=(value) ⇒ Object (writeonly)

Sets the attribute min

Parameters:

  • value

    the value to set the attribute min to.



32
33
34
# File 'lib/clockwork/at.rb', line 32

def min=(value)
  @min = value
end

#wday=(value) ⇒ Object (writeonly)

Sets the attribute wday

Parameters:

  • value

    the value to set the attribute wday to.



32
33
34
# File 'lib/clockwork/at.rb', line 32

def wday=(value)
  @wday = value
end

Class Method Details

.parse(at) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/clockwork/at.rb', line 10

def self.parse(at)
  return unless at
  case at
  when /^([[:alpha:]]+)\s(.*)$/
    ret = parse($2)
    wday = WDAYS.find_index { |x| x.include?($1) }
    raise FailedToParse, at if wday.nil?
    ret.wday = wday
    ret
  when /^(\d{1,2}):(\d\d)$/
    new($2.to_i, $1.to_i)
  when /^\*{1,2}:(\d\d)$/
    new($1.to_i)
  when /^(\d{1,2}):\*\*$/
    new(NOT_SPECIFIED, $1.to_i)
  else
    raise FailedToParse, at
  end
rescue ArgumentError
  raise FailedToParse, at
end

Instance Method Details

#ready?(t) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
# File 'lib/clockwork/at.rb', line 45

def ready?(t)
  (@min == NOT_SPECIFIED or t.min == @min) and
    (@hour == NOT_SPECIFIED or t.hour == @hour) and
    (@wday == NOT_SPECIFIED or t.wday == @wday)
end