| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- /*
 
-  Copyright 2015, Yahoo Inc.
 
-  Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
 
-  */
 
- 'use strict';
 
- const { FileCoverage } = require('istanbul-lib-coverage').classes;
 
- function locString(loc) {
 
-     return [
 
-         loc.start.line,
 
-         loc.start.column,
 
-         loc.end.line,
 
-         loc.end.column
 
-     ].join(':');
 
- }
 
- class MappedCoverage extends FileCoverage {
 
-     constructor(pathOrObj) {
 
-         super(pathOrObj);
 
-         this.meta = {
 
-             last: {
 
-                 s: 0,
 
-                 f: 0,
 
-                 b: 0
 
-             },
 
-             seen: {}
 
-         };
 
-     }
 
-     addStatement(loc, hits) {
 
-         const key = 's:' + locString(loc);
 
-         const { meta } = this;
 
-         let 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;
 
-     }
 
-     addFunction(name, decl, loc, hits) {
 
-         const key = 'f:' + locString(decl);
 
-         const { meta } = this;
 
-         let 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,
 
-                 decl: this.cloneLocation(decl),
 
-                 loc: this.cloneLocation(loc)
 
-             };
 
-         }
 
-         this.f[index] = this.f[index] || 0;
 
-         this.f[index] += hits;
 
-         return index;
 
-     }
 
-     addBranch(type, loc, branchLocations, hits) {
 
-         const key = ['b', ...branchLocations.map(l => locString(l))].join(':');
 
-         const { meta } = this;
 
-         let index = meta.seen[key];
 
-         if (index === undefined) {
 
-             index = meta.last.b;
 
-             meta.last.b += 1;
 
-             meta.seen[key] = index;
 
-             this.branchMap[index] = {
 
-                 loc,
 
-                 type,
 
-                 locations: branchLocations.map(l => this.cloneLocation(l))
 
-             };
 
-         }
 
-         if (!this.b[index]) {
 
-             this.b[index] = branchLocations.map(() => 0);
 
-         }
 
-         hits.forEach((hit, i) => {
 
-             this.b[index][i] += hit;
 
-         });
 
-         return index;
 
-     }
 
-     /* Returns a clone of the location object with only the attributes of interest */
 
-     cloneLocation(loc) {
 
-         return {
 
-             start: {
 
-                 line: loc.start.line,
 
-                 column: loc.start.column
 
-             },
 
-             end: {
 
-                 line: loc.end.line,
 
-                 column: loc.end.column
 
-             }
 
-         };
 
-     }
 
- }
 
- module.exports = {
 
-     MappedCoverage
 
- };
 
 
  |