* Convert a contiguous array of LineRecords into merged ranges for output.
(lines: LineRecord[])
| 250 | * Convert a contiguous array of LineRecords into merged ranges for output. |
| 251 | */ |
| 252 | function computeIncludedRanges(lines: LineRecord[]): Array<[number, number]> { |
| 253 | if (lines.length === 0) return [] |
| 254 | |
| 255 | const ranges: Array<[number, number]> = [] |
| 256 | let rangeStart = lines[0].lineNumber |
| 257 | let rangeEnd = lines[0].lineNumber |
| 258 | |
| 259 | for (let i = 1; i < lines.length; i++) { |
| 260 | const lineNum = lines[i].lineNumber |
| 261 | if (lineNum === rangeEnd + 1) { |
| 262 | // Contiguous |
| 263 | rangeEnd = lineNum |
| 264 | } else { |
| 265 | // Gap - save current range and start new one |
| 266 | ranges.push([rangeStart, rangeEnd]) |
| 267 | rangeStart = lineNum |
| 268 | rangeEnd = lineNum |
| 269 | } |
| 270 | } |
| 271 | // Don't forget the last range |
| 272 | ranges.push([rangeStart, rangeEnd]) |
| 273 | |
| 274 | return ranges |
| 275 | } |
| 276 | |
| 277 | // ─── Main Export ────────────────────────────────────────────────────────────── |
| 278 |
no outgoing calls
no test coverage detected