File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
var Set = require('es6-set')
module.exports = Binding
function Binding (name, definition) {
this.name = name
this.definition = definition
this.references = new Set()
if (definition) this.add(definition)
}
Binding.prototype.add = function (node) {
this.references.add(node)
return this
}
Binding.prototype.remove = function (node) {
if (!this.references.has(node)) {
throw new Error('Tried removing nonexistent reference')
}
this.references.delete(node)
return this
}
Binding.prototype.isReferenced = function () {
var definition = this.definition
var isReferenced = false
this.each(function (ref) {
if (ref !== definition) isReferenced = true
})
return isReferenced
}
Binding.prototype.getReferences = function () {
var arr = []
this.each(function (ref) { arr.push(ref) })
return arr
}
Binding.prototype.each = function (cb) {
this.references.forEach(function (ref) { cb(ref) })
return this
}