aboutsummaryrefslogtreecommitdiff
path: root/node_modules/v8-to-istanbul/lib/line.js
blob: 0fe1a60854f3b472396a4be6a176a4870a14c622 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module.exports = class CovLine {
  constructor (line, startCol, lineStr) {
    this.line = line
    // note that startCol and endCol are absolute positions
    // within a file, not relative to the line.
    this.startCol = startCol

    // the line length itself does not include the newline characters,
    // these are however taken into account when enumerating absolute offset.
    const matchedNewLineChar = lineStr.match(/\r?\n$/u)
    const newLineLength = matchedNewLineChar ? matchedNewLineChar[0].length : 0
    this.endCol = startCol + lineStr.length - newLineLength

    // we start with all lines having been executed, and work
    // backwards zeroing out lines based on V8 output.
    this.count = 1

    // set by source.js during parsing, if /* c8 ignore next */ is found.
    this.ignore = false
  }

  toIstanbul () {
    return {
      start: {
        line: this.line,
        column: 0
      },
      end: {
        line: this.line,
        column: this.endCol - this.startCol
      }
    }
  }
}