Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/vitest-dev/vitest. Next generation testing framework powered by Vite. vitest.dev
test testing-tools vite
Something went wrong. Try again.
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243export const lineSplitRE: RegExp = /\r?\n/
export function positionToOffset( source: string, lineNumber: number, columnNumber: number,): number { const lines = source.split(lineSplitRE) const nl = /\r\n/.test(source) ? 2 : 1 let start = 0
if (lineNumber > lines.length) { return source.length }
for (let i = 0; i < lineNumber - 1; i++) { start += lines[i].length + nl }
return start + columnNumber}
export function offsetToLineNumber(source: string, offset: number): number { if (offset > source.length) { throw new Error( `offset is longer than source length! offset ${offset} > length ${source.length}`, ) } const lines = source.split(lineSplitRE) const nl = /\r\n/.test(source) ? 2 : 1 let counted = 0 let line = 0 for (; line < lines.length; line++) { const lineLength = lines[line].length + nl if (counted + lineLength >= offset) { break }
counted += lineLength } return line + 1}