Jump To …

timeout.coffee

TimeString = require './time_string'

class Timeout
  _setTimeout: ->
    if @milliseconds? and @callback?
      func = if @condition?
        =>
          if @condition()
            clearTimeout @timeout
          else
            @callback()
      else
        @callback
      @timeout = setTimeout(func, @milliseconds)
    @
  constructor: (params) ->
    @milliseconds = new TimeString(params.timeString).toMilliseconds() if params.timeString
    @condition = params.condition if params.condition
  in: (timeString) ->
    @milliseconds = new TimeString(timeString).toMilliseconds()
    @_setTimeout()
  do: (callback) ->
    @callback = callback
    @_setTimeout()

module.exports = Timeout