Show More
Commit Description:
add model solution
Commit Description:
add model solution
References:
File last commit:
Show/Diff file:
Action:
node_modules/scope-analyzer/binding.js
| 44 lines
| 949 B
| application/javascript
| JavascriptLexer
|
r789 | 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 | ||||
} | ||||