diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:38:50 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:40:43 +0200 |
commit | 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch) | |
tree | 6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/istanbul-lib-source-maps/lib/mapped.js | |
parent | 963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff) |
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/istanbul-lib-source-maps/lib/mapped.js')
-rw-r--r-- | node_modules/istanbul-lib-source-maps/lib/mapped.js | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/node_modules/istanbul-lib-source-maps/lib/mapped.js b/node_modules/istanbul-lib-source-maps/lib/mapped.js new file mode 100644 index 000000000..fac8d7d5f --- /dev/null +++ b/node_modules/istanbul-lib-source-maps/lib/mapped.js @@ -0,0 +1,120 @@ +/* + Copyright 2015, Yahoo Inc. + Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. + */ +"use strict"; + +var FileCoverage = require('istanbul-lib-coverage').classes.FileCoverage, + util = require('util'); + +function MappedCoverage(pathOrObj) { + FileCoverage.call(this, pathOrObj); + this.meta = { + last: { + s: 0, + f: 0, + b: 0 + }, + seen: {} + }; +} + +util.inherits(MappedCoverage, FileCoverage); + +function locString(loc) { + return [loc.start.line, loc.start.column, loc.end.line, loc.end.column].join(':'); +} + +MappedCoverage.prototype.addStatement = function (loc, hits) { + var key = 's:' + locString(loc), + meta = this.meta, + index = meta.seen[key]; + + if (index === undefined) { + index = meta.last.s; + meta.last.s += 1; + meta.seen[key] = index; + this.statementMap[index] = this.cloneLocation(loc); + } + this.s[index] = this.s[index] || 0; + this.s[index] += hits; + return index; +}; + +MappedCoverage.prototype.addFunction = function (name, decl, loc, hits) { + var key = 'f:' + locString(decl), + meta = this.meta, + index = meta.seen[key]; + + if (index === undefined) { + index = meta.last.f; + meta.last.f += 1; + meta.seen[key] = index; + name = name || '(unknown_' + index + ')'; + this.fnMap[index] = { + name: name, + decl: this.cloneLocation(decl), + loc: this.cloneLocation(loc) + }; + } + this.f[index] = this.f[index] || 0; + this.f[index] += hits; + return index; +}; + +MappedCoverage.prototype.addBranch = function (type, loc, branchLocations, hits) { + var key = ['b'], + meta = this.meta, + that = this, + index, + i; + + branchLocations.forEach(function (l) { + key.push(locString(l)); + }); + + key = key.join(':'); + index = meta.seen[key]; + if (index === undefined) { + index = meta.last.b; + meta.last.b += 1; + meta.seen[key] = index; + this.branchMap[index] = { + loc: loc, + type: type, + locations: branchLocations.map(function (l) { + return that.cloneLocation(l); + }) + }; + } + + if (!this.b[index]) { + this.b[index] = []; + branchLocations.forEach(function () { + that.b[index].push(0); + }); + } + for (i = 0; i < hits.length; i += 1) { + that.b[index][i] += hits[i]; + } + return index; +}; + +// returns a clone of the location object with only +// the attributes of interest +MappedCoverage.prototype.cloneLocation = function (loc) { + return { + start: { + line: loc.start.line, + column: loc.start.column + }, + end: { + line: loc.end.line, + column: loc.end.column + } + }; +}; + +module.exports = { + MappedCoverage: MappedCoverage +}; |