/** | |
* Represents a location in a Source. | |
*/ | |
/** | |
* Takes a Source and a UTF-8 character offset, and returns the corresponding | |
* line and column as a SourceLocation. | |
*/ | |
export function getLocation(source, position) { | |
var lineRegexp = /\r\n|[\n\r]/g; | |
var line = 1; | |
var column = position + 1; | |
var match; | |
while ((match = lineRegexp.exec(source.body)) && match.index < position) { | |
line += 1; | |
column = position + 1 - (match.index + match[0].length); | |
} | |
return { | |
line: line, | |
column: column | |
}; | |
} |