Class: Zoidberg::Timer::Action

Inherits:
Object
  • Object
show all
Defined in:
lib/zoidberg/timer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}, &block) ⇒ self

Create a new action

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :interval (Numeric)
  • :recur (TrueClass, FalseClass)


25
26
27
28
29
30
31
32
33
34
# File 'lib/zoidberg/timer.rb', line 25

def initialize(args={}, &block)
  unless(block)
    raise ArgumentError.new 'Action is required. Block must be provided!'
  end
  @action = block
  @recur = args.fetch(:recur, false)
  @interval = args.fetch(:interval, 5)
  @last_run = Time.now.to_f
  @cancel = false
end

Instance Attribute Details

#actionProc (readonly)

Returns action to run.

Returns:

  • (Proc)

    action to run



13
14
15
# File 'lib/zoidberg/timer.rb', line 13

def action
  @action
end

#intervalNumeric (readonly)

Returns:

  • (Numeric)


15
16
17
# File 'lib/zoidberg/timer.rb', line 15

def interval
  @interval
end

#last_runFloat (readonly)

Returns:

  • (Float)


17
18
19
# File 'lib/zoidberg/timer.rb', line 17

def last_run
  @last_run
end

#recurTrueClass, FalseClass (readonly)

Returns:

  • (TrueClass, FalseClass)


11
12
13
# File 'lib/zoidberg/timer.rb', line 11

def recur
  @recur
end

Instance Method Details

#cancelTrueClass

Cancel the action

Returns:

  • (TrueClass)


39
40
41
42
# File 'lib/zoidberg/timer.rb', line 39

def cancel
  @recur = false
  @cancel = true
end

#cancelled?TrueClass, FalseClass Also known as: canceled?

Returns:

  • (TrueClass, FalseClass)


45
46
47
# File 'lib/zoidberg/timer.rb', line 45

def cancelled?
  @cancel
end

#ready?TrueClass, FalseClass

Returns:

  • (TrueClass, FalseClass)


63
64
65
66
67
# File 'lib/zoidberg/timer.rb', line 63

def ready?
  Time.now.to_f > (
    last_run + interval
  )
end

#run!self

Run the action

Returns:

  • (self)


53
54
55
56
57
58
59
60
# File 'lib/zoidberg/timer.rb', line 53

def run!
  unless(cancelled?)
    @last_run = Time.now.to_f
    action.call
    @last_run = Time.now.to_f
  end
  self
end