(file, pos)
| 593 | }; |
| 594 | |
| 595 | function asLineChar(file, pos) { |
| 596 | if (!file) return {line: 0, ch: 0}; |
| 597 | var offsets = file.lineOffsets || (file.lineOffsets = [0]); |
| 598 | var text = file.text, line, lineStart; |
| 599 | for (var i = offsets.length - 1; i >= 0; --i) if (offsets[i] <= pos) { |
| 600 | line = i * offsetSkipLines; |
| 601 | lineStart = offsets[i]; |
| 602 | } |
| 603 | for (;;) { |
| 604 | var eol = text.indexOf("\n", lineStart); |
| 605 | if (eol >= pos || eol < 0) break; |
| 606 | lineStart = eol + 1; |
| 607 | ++line; |
| 608 | } |
| 609 | return {line: line, ch: pos - lineStart}; |
| 610 | } |
| 611 | |
| 612 | var outputPos = exports.outputPos = function(query, file, pos) { |
| 613 | if (query.lineCharPositions) { |
no test coverage detected