tick-tock
Advanced tools
Comparing version 0.0.9 to 0.1.0
101
index.js
'use strict'; | ||
var has = Object.prototype.hasOwnProperty; | ||
var has = Object.prototype.hasOwnProperty | ||
, ms = require('millisecond'); | ||
@@ -49,10 +50,12 @@ // | ||
return function tickedtock() { | ||
if (!(name in tock.timers)) return; | ||
var timer = tock.timers[name] | ||
, fns; | ||
, fns = timer.fns.slice() | ||
, l = fns.length | ||
, i = 0; | ||
if (!timer) return; | ||
fns = timer.fns.slice(); | ||
if (clear) tock.clear(name); | ||
if (clear) tock.clear(name); | ||
for (var i = 0, l = fns.length; i < l; i++) { | ||
for (; i < l; i++) { | ||
fns[i].call(tock.context); | ||
@@ -68,14 +71,16 @@ } | ||
* @param {Function} fn Completion callback. | ||
* @param {Mixed} ms Duration of the timer. | ||
* @param {Mixed} time Duration of the timer. | ||
* @returns {Tick} | ||
* @api public | ||
*/ | ||
Tick.prototype.setTimeout = function timeout(name, fn, ms) { | ||
if (this.timers[name]) { | ||
this.timers[name].fns.push(fn); | ||
return this; | ||
Tick.prototype.setTimeout = function timeout(name, fn, time) { | ||
var tick = this; | ||
if (tick.timers[name]) { | ||
tick.timers[name].fns.push(fn); | ||
return tick; | ||
} | ||
this.timers[name] = { | ||
timer: setTimeout(this.tock(name, true), Tick.parse(ms)), | ||
tick.timers[name] = { | ||
timer: setTimeout(tick.tock(name, true), ms(time)), | ||
clear: clearTimeout, | ||
@@ -85,3 +90,3 @@ fns: [fn] | ||
return this; | ||
return tick; | ||
}; | ||
@@ -94,14 +99,16 @@ | ||
* @param {Function} fn Completion callback. | ||
* @param {Mixed} ms Interval of the timer. | ||
* @param {Mixed} time Interval of the timer. | ||
* @returns {Tick} | ||
* @api public | ||
*/ | ||
Tick.prototype.setInterval = function interval(name, fn, ms) { | ||
if (this.timers[name]) { | ||
this.timers[name].fns.push(fn); | ||
return this; | ||
Tick.prototype.setInterval = function interval(name, fn, time) { | ||
var tick = this; | ||
if (tick.timers[name]) { | ||
tick.timers[name].fns.push(fn); | ||
return tick; | ||
} | ||
this.timers[name] = { | ||
timer: setInterval(this.tock(name), Tick.parse(ms)), | ||
tick.timers[name] = { | ||
timer: setInterval(tick.tock(name), ms(time)), | ||
clear: clearInterval, | ||
@@ -111,6 +118,7 @@ fns: [fn] | ||
return this; | ||
return tick; | ||
}; | ||
/** | ||
* Add a new setImmediate. | ||
* | ||
@@ -123,11 +131,13 @@ * @param {String} name Name of the timer. | ||
Tick.prototype.setImmediate = function immediate(name, fn) { | ||
if (!next) return this.setTimeout(name, fn, 0); | ||
var tick = this; | ||
if (this.timers[name]) { | ||
this.timers[name].fns.push(fn); | ||
return this; | ||
if (!next) return tick.setTimeout(name, fn, 0); | ||
if (tick.timers[name]) { | ||
tick.timers[name].fns.push(fn); | ||
return tick; | ||
} | ||
this.timers[name] = { | ||
timer: (next.setImmediate || next)(this.tock(name, true)), | ||
tick.timers[name] = { | ||
timer: (next.setImmediate || next)(tick.tock(name, true)), | ||
clear: next.clearImmediate, | ||
@@ -137,3 +147,3 @@ fns: [fn] | ||
return this; | ||
return tick; | ||
}; | ||
@@ -162,2 +172,3 @@ | ||
var args = arguments.length ? arguments : [] | ||
, tick = this | ||
, timer, i, l; | ||
@@ -170,4 +181,4 @@ | ||
if (!args.length) { | ||
for (timer in this.timers) { | ||
if (has.call(this.timers, timer)) args.push(timer); | ||
for (timer in tick.timers) { | ||
if (has.call(tick.timers, timer)) args.push(timer); | ||
} | ||
@@ -177,3 +188,3 @@ } | ||
for (i = 0, l = args.length; i < l; i++) { | ||
timer = this.timers[args[i]]; | ||
timer = tick.timers[args[i]]; | ||
@@ -183,7 +194,7 @@ if (!timer) continue; | ||
timer.fns.length = 0; | ||
delete this.timers[args[i]]; | ||
timer.fns = timer.timer = timer.clear = null; | ||
delete tick.timers[args[i]]; | ||
} | ||
return this; | ||
return tick; | ||
}; | ||
@@ -212,22 +223,16 @@ | ||
*/ | ||
Tick.prototype.adjust = function adjust(name, ms) { | ||
var timer = this.timers[name] | ||
, interval; | ||
Tick.prototype.adjust = function adjust(name, time) { | ||
var interval | ||
, tick = this | ||
, timer = tick.timers[name]; | ||
if (!timer) return this; | ||
if (!timer) return tick; | ||
interval = timer.clear === clearInterval; | ||
timer.clear(timer.timer); | ||
timer.timer = (interval ? setInterval : setTimeout)(this.tock(name, !interval), Tick.parse(ms)); | ||
timer.timer = (interval ? setInterval : setTimeout)(tick.tock(name, !interval), ms(time)); | ||
return this; | ||
return tick; | ||
}; | ||
/** | ||
* Parse a time string and return the number value of it. | ||
* | ||
* @returns {Number} | ||
* @api private | ||
*/ | ||
Tick.parse = require('millisecond'); | ||
// | ||
@@ -234,0 +239,0 @@ // Expose the timer factory. |
{ | ||
"name": "tick-tock", | ||
"version": "0.0.9", | ||
"version": "0.1.0", | ||
"description": "Timer management, never forget to clear timers again", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
17861
429