UNPKG

@glimmer/compiler

Version:
38 lines 4.14 kB
export function locationToOffset(source, line, column) { var seenLines = 0; var seenChars = 0; while (true) { if (seenChars === source.length) return null; var nextLine = source.indexOf('\n', seenChars); if (nextLine === -1) nextLine = source.length; if (seenLines === line) { if (seenChars + column > nextLine) return null; return seenChars + column; } else if (nextLine === -1) { return null; } else { seenLines += 1; seenChars = nextLine + 1; } } } export function offsetToLocation(source, offset) { var seenLines = 0; var seenChars = 0; if (offset > source.length) { return null; } while (true) { var nextLine = source.indexOf('\n', seenChars); if (offset <= nextLine || nextLine === -1) { return { line: seenLines, column: offset - seenChars }; } else { seenLines += 1; seenChars = nextLine + 1; } } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9sb2NhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FJTSxTQUFBLGdCQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLEVBR1U7QUFFZCxRQUFJLFlBQUosQ0FBQTtBQUNBLFFBQUksWUFBSixDQUFBO0FBRUEsV0FBQSxJQUFBLEVBQWE7QUFDWCxZQUFJLGNBQWMsT0FBbEIsTUFBQSxFQUFpQyxPQUFBLElBQUE7QUFFakMsWUFBSSxXQUFXLE9BQUEsT0FBQSxDQUFBLElBQUEsRUFBZixTQUFlLENBQWY7QUFDQSxZQUFJLGFBQWEsQ0FBakIsQ0FBQSxFQUFxQixXQUFXLE9BQVgsTUFBQTtBQUVyQixZQUFJLGNBQUosSUFBQSxFQUF3QjtBQUN0QixnQkFBSSxZQUFBLE1BQUEsR0FBSixRQUFBLEVBQW1DLE9BQUEsSUFBQTtBQUNuQyxtQkFBTyxZQUFQLE1BQUE7QUFGRixTQUFBLE1BR08sSUFBSSxhQUFhLENBQWpCLENBQUEsRUFBcUI7QUFDMUIsbUJBQUEsSUFBQTtBQURLLFNBQUEsTUFFQTtBQUNMLHlCQUFBLENBQUE7QUFDQSx3QkFBWSxXQUFaLENBQUE7QUFDRDtBQUNGO0FBQ0Y7QUFPRCxPQUFNLFNBQUEsZ0JBQUEsQ0FBQSxNQUFBLEVBQUEsTUFBQSxFQUF5RDtBQUM3RCxRQUFJLFlBQUosQ0FBQTtBQUNBLFFBQUksWUFBSixDQUFBO0FBRUEsUUFBSSxTQUFTLE9BQWIsTUFBQSxFQUE0QjtBQUMxQixlQUFBLElBQUE7QUFDRDtBQUVELFdBQUEsSUFBQSxFQUFhO0FBQ1gsWUFBSSxXQUFXLE9BQUEsT0FBQSxDQUFBLElBQUEsRUFBZixTQUFlLENBQWY7QUFFQSxZQUFJLFVBQUEsUUFBQSxJQUFzQixhQUFhLENBQXZDLENBQUEsRUFBMkM7QUFDekMsbUJBQU87QUFDTCxzQkFESyxTQUFBO0FBRUwsd0JBQVEsU0FBUztBQUZaLGFBQVA7QUFERixTQUFBLE1BS087QUFDTCx5QkFBQSxDQUFBO0FBQ0Esd0JBQVksV0FBWixDQUFBO0FBQ0Q7QUFDRjtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbnR5cGUgU291cmNlT2Zmc2V0ID0gbnVtYmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jYXRpb25Ub09mZnNldChcbiAgc291cmNlOiBzdHJpbmcsXG4gIGxpbmU6IG51bWJlcixcbiAgY29sdW1uOiBudW1iZXJcbik6IE9wdGlvbjxTb3VyY2VPZmZzZXQ+IHtcbiAgbGV0IHNlZW5MaW5lcyA9IDA7XG4gIGxldCBzZWVuQ2hhcnMgPSAwO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKHNlZW5DaGFycyA9PT0gc291cmNlLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICBsZXQgbmV4dExpbmUgPSBzb3VyY2UuaW5kZXhPZignXFxuJywgc2VlbkNoYXJzKTtcbiAgICBpZiAobmV4dExpbmUgPT09IC0xKSBuZXh0TGluZSA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICBpZiAoc2VlbkxpbmVzID09PSBsaW5lKSB7XG4gICAgICBpZiAoc2VlbkNoYXJzICsgY29sdW1uID4gbmV4dExpbmUpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHNlZW5DaGFycyArIGNvbHVtbjtcbiAgICB9IGVsc2UgaWYgKG5leHRMaW5lID09PSAtMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlZW5MaW5lcyArPSAxO1xuICAgICAgc2VlbkNoYXJzID0gbmV4dExpbmUgKyAxO1xuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgU291cmNlTG9jYXRpb24ge1xuICBsaW5lOiBudW1iZXI7XG4gIGNvbHVtbjogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2Zmc2V0VG9Mb2NhdGlvbihzb3VyY2U6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBPcHRpb248U291cmNlTG9jYXRpb24+IHtcbiAgbGV0IHNlZW5MaW5lcyA9IDA7XG4gIGxldCBzZWVuQ2hhcnMgPSAwO1xuXG4gIGlmIChvZmZzZXQgPiBzb3VyY2UubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGxldCBuZXh0TGluZSA9IHNvdXJjZS5pbmRleE9mKCdcXG4nLCBzZWVuQ2hhcnMpO1xuXG4gICAgaWYgKG9mZnNldCA8PSBuZXh0TGluZSB8fCBuZXh0TGluZSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IHNlZW5MaW5lcyxcbiAgICAgICAgY29sdW1uOiBvZmZzZXQgLSBzZWVuQ2hhcnMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWVuTGluZXMgKz0gMTtcbiAgICAgIHNlZW5DaGFycyA9IG5leHRMaW5lICsgMTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=