UNPKG

@glimmer/syntax

Version:
67 lines (55 loc) 6.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loc = loc; exports.hasSpan = hasSpan; exports.maybeLoc = maybeLoc; exports.SpanList = void 0; var _span = require("./span"); class SpanList { constructor(span = []) { this._span = span; } static range(span, fallback = _span.SourceSpan.NON_EXISTENT) { return new SpanList(span.map(loc)).getRangeOffset(fallback); } add(offset) { this._span.push(offset); } getRangeOffset(fallback) { if (this._span.length === 0) { return fallback; } else { let first = this._span[0]; let last = this._span[this._span.length - 1]; return first.extend(last); } } } exports.SpanList = SpanList; function loc(span) { if (Array.isArray(span)) { let first = span[0]; let last = span[span.length - 1]; return loc(first).extend(loc(last)); } else if (span instanceof _span.SourceSpan) { return span; } else { return span.loc; } } function hasSpan(span) { if (Array.isArray(span) && span.length === 0) { return false; } return true; } function maybeLoc(location, fallback) { if (hasSpan(location)) { return loc(location); } else { return fallback; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7O0FBT00sTUFBQSxRQUFBLENBQWU7QUFTbkIsRUFBQSxXQUFBLENBQVksSUFBQSxHQUFaLEVBQUEsRUFBbUM7QUFDakMsU0FBQSxLQUFBLEdBQUEsSUFBQTtBQUNEOztBQVJELFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBb0MsUUFBQSxHQUF1QixpQkFBM0QsWUFBQSxFQUFrRjtBQUNoRixXQUFPLElBQUEsUUFBQSxDQUFhLElBQUksQ0FBSixHQUFBLENBQWIsR0FBYSxDQUFiLEVBQUEsY0FBQSxDQUFQLFFBQU8sQ0FBUDtBQUNEOztBQVFELEVBQUEsR0FBRyxDQUFBLE1BQUEsRUFBbUI7QUFDcEIsU0FBQSxLQUFBLENBQUEsSUFBQSxDQUFBLE1BQUE7QUFDRDs7QUFFRCxFQUFBLGNBQWMsQ0FBQSxRQUFBLEVBQXFCO0FBQ2pDLFFBQUksS0FBQSxLQUFBLENBQUEsTUFBQSxLQUFKLENBQUEsRUFBNkI7QUFDM0IsYUFBQSxRQUFBO0FBREYsS0FBQSxNQUVPO0FBQ0wsVUFBSSxLQUFLLEdBQUcsS0FBQSxLQUFBLENBQVosQ0FBWSxDQUFaO0FBQ0EsVUFBSSxJQUFJLEdBQUcsS0FBQSxLQUFBLENBQVcsS0FBQSxLQUFBLENBQUEsTUFBQSxHQUF0QixDQUFXLENBQVg7QUFFQSxhQUFPLEtBQUssQ0FBTCxNQUFBLENBQVAsSUFBTyxDQUFQO0FBQ0Q7QUFDRjs7QUExQmtCOzs7O0FBK0JmLFNBQUEsR0FBQSxDQUFBLElBQUEsRUFBaUM7QUFDckMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFKLElBQUksQ0FBSixFQUF5QjtBQUN2QixRQUFJLEtBQUssR0FBRyxJQUFJLENBQWhCLENBQWdCLENBQWhCO0FBQ0EsUUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBSixNQUFBLEdBQWhCLENBQWUsQ0FBZjtBQUVBLFdBQU8sR0FBRyxDQUFILEtBQUcsQ0FBSCxDQUFBLE1BQUEsQ0FBa0IsR0FBRyxDQUE1QixJQUE0QixDQUFyQixDQUFQO0FBSkYsR0FBQSxNQUtPLElBQUksSUFBSSxZQUFSLGdCQUFBLEVBQWdDO0FBQ3JDLFdBQUEsSUFBQTtBQURLLEdBQUEsTUFFQTtBQUNMLFdBQU8sSUFBSSxDQUFYLEdBQUE7QUFDRDtBQUNGOztBQUlLLFNBQUEsT0FBQSxDQUFBLElBQUEsRUFBMEM7QUFDOUMsTUFBSSxLQUFLLENBQUwsT0FBQSxDQUFBLElBQUEsS0FBdUIsSUFBSSxDQUFKLE1BQUEsS0FBM0IsQ0FBQSxFQUE4QztBQUM1QyxXQUFBLEtBQUE7QUFDRDs7QUFFRCxTQUFBLElBQUE7QUFDRDs7QUFFSyxTQUFBLFFBQUEsQ0FBQSxRQUFBLEVBQUEsUUFBQSxFQUFxRTtBQUN6RSxNQUFJLE9BQU8sQ0FBWCxRQUFXLENBQVgsRUFBdUI7QUFDckIsV0FBTyxHQUFHLENBQVYsUUFBVSxDQUFWO0FBREYsR0FBQSxNQUVPO0FBQ0wsV0FBQSxRQUFBO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB0eXBlIHsgUHJlc2VudEFycmF5IH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuLCBMb2NhdGVkV2l0aFNwYW4gfSBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZU9mZnNldCwgU291cmNlU3BhbiB9IGZyb20gJy4vc3Bhbic7XG5cbmV4cG9ydCB0eXBlIEhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhTcGFuIHwgUHJlc2VudEFycmF5PExvY2F0ZWRXaXRoU3Bhbj47XG5leHBvcnQgdHlwZSBNYXliZUhhc1NwYW4gPSBTb3VyY2VTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW4gfCBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbltdIHwgbnVsbDtcblxuZXhwb3J0IHR5cGUgVG9Tb3VyY2VPZmZzZXQgPSBudW1iZXIgfCBTb3VyY2VPZmZzZXQ7XG5cbmV4cG9ydCBjbGFzcyBTcGFuTGlzdCB7XG4gIHN0YXRpYyByYW5nZShzcGFuOiBQcmVzZW50QXJyYXk8SGFzU291cmNlU3Bhbj4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW47XG4gIHN0YXRpYyByYW5nZShzcGFuOiBIYXNTb3VyY2VTcGFuW10sIGZhbGxiYWNrOiBTb3VyY2VTcGFuID0gU291cmNlU3Bhbi5OT05fRVhJU1RFTlQpOiBTb3VyY2VTcGFuIHtcbiAgICByZXR1cm4gbmV3IFNwYW5MaXN0KHNwYW4ubWFwKGxvYykpLmdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrKTtcbiAgfVxuXG4gIF9zcGFuOiBTb3VyY2VTcGFuW107XG5cbiAgY29uc3RydWN0b3Ioc3BhbjogU291cmNlU3BhbltdID0gW10pIHtcbiAgICB0aGlzLl9zcGFuID0gc3BhbjtcbiAgfVxuXG4gIGFkZChvZmZzZXQ6IFNvdXJjZVNwYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9zcGFuLnB1c2gob2Zmc2V0KTtcbiAgfVxuXG4gIGdldFJhbmdlT2Zmc2V0KGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gICAgaWYgKHRoaXMuX3NwYW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBmaXJzdCA9IHRoaXMuX3NwYW5bMF07XG4gICAgICBsZXQgbGFzdCA9IHRoaXMuX3NwYW5bdGhpcy5fc3Bhbi5sZW5ndGggLSAxXTtcblxuICAgICAgcmV0dXJuIGZpcnN0LmV4dGVuZChsYXN0KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgSGFzU291cmNlU3BhbiA9IHsgbG9jOiBTb3VyY2VTcGFuIH0gfCBTb3VyY2VTcGFuIHwgW0hhc1NvdXJjZVNwYW4sIC4uLkhhc1NvdXJjZVNwYW5bXV07XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2Moc3BhbjogSGFzU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSkge1xuICAgIGxldCBmaXJzdCA9IHNwYW5bMF07XG4gICAgbGV0IGxhc3QgPSBzcGFuW3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICByZXR1cm4gbG9jKGZpcnN0KS5leHRlbmQobG9jKGxhc3QpKTtcbiAgfSBlbHNlIGlmIChzcGFuIGluc3RhbmNlb2YgU291cmNlU3Bhbikge1xuICAgIHJldHVybiBzcGFuO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzcGFuLmxvYztcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYXliZUhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IE1heWJlSGFzU291cmNlU3BhbltdO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzU3BhbihzcGFuOiBNYXliZUhhc1NvdXJjZVNwYW4pOiBzcGFuIGlzIEhhc1NvdXJjZVNwYW4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShzcGFuKSAmJiBzcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF5YmVMb2MobG9jYXRpb246IE1heWJlSGFzU291cmNlU3BhbiwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKGhhc1NwYW4obG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvYyhsb2NhdGlvbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9