You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
727 B
33 lines
727 B
5 years ago
|
var inRange = require('./range')
|
||
|
|
||
|
module.exports = function (compare) {
|
||
|
var hooks = []
|
||
|
|
||
|
return {
|
||
|
add: function (range, hook) {
|
||
|
var m = {range: range, hook: hook}
|
||
|
hooks.push(m)
|
||
|
//call this to remove
|
||
|
return function () {
|
||
|
var i = hooks.indexOf(m)
|
||
|
if(~i) return hooks.splice(i, 1)
|
||
|
}
|
||
|
|
||
|
},
|
||
|
|
||
|
//remove all listeners within a range.
|
||
|
//this will be used to close a sublevel.
|
||
|
removeAll: function (range) {
|
||
|
throw new Error('not implemented')
|
||
|
},
|
||
|
|
||
|
trigger: function (key, args) {
|
||
|
for(var i = 0; i < hooks.length; i++) {
|
||
|
var test = hooks[i]
|
||
|
if(inRange(test.range, key, compare))
|
||
|
test.hook.apply(this, args)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|