UNPKG

@glimmer/syntax

Version:
78 lines (63 loc) 6.7 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"); var SpanList = /*#__PURE__*/function () { function SpanList(span) { if (span === void 0) { span = []; } this._span = span; } SpanList.range = function range(span, fallback) { if (fallback === void 0) { fallback = _span.SourceSpan.NON_EXISTENT; } return new SpanList(span.map(loc)).getRangeOffset(fallback); }; var _proto = SpanList.prototype; _proto.add = function add(offset) { this._span.push(offset); }; _proto.getRangeOffset = function getRangeOffset(fallback) { if (this._span.length === 0) { return fallback; } else { var first = this._span[0]; var last = this._span[this._span.length - 1]; return first.extend(last); } }; return SpanList; }(); exports.SpanList = SpanList; function loc(span) { if (Array.isArray(span)) { var first = span[0]; var 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvc291cmNlL3NwYW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBSUE7O0FBT0EsSUFBTSxRQUFOLEdBQUEsYUFBQSxZQUFBO0FBU0UsV0FBQSxRQUFBLENBQUEsSUFBQSxFQUFtQztBQUFBLFFBQXZCLElBQXVCLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsTUFBQSxJQUF1QixHQUFuQyxFQUFZO0FBQXVCOztBQUNqQyxTQUFBLEtBQUEsR0FBQSxJQUFBO0FBQ0Q7O0FBWEgsRUFBQSxRQUFBLENBQUEsS0FBQSxHQUdFLFNBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxRQUFBLEVBQWtGO0FBQUEsUUFBOUMsUUFBOEMsS0FBQSxLQUFBLENBQUEsRUFBQTtBQUE5QyxNQUFBLFFBQThDLEdBQXZCLGlCQUEzRCxZQUFvQztBQUE4Qzs7QUFDaEYsV0FBTyxJQUFBLFFBQUEsQ0FBYSxJQUFJLENBQUosR0FBQSxDQUFiLEdBQWEsQ0FBYixFQUFBLGNBQUEsQ0FBUCxRQUFPLENBQVA7QUFKSixHQUFBOztBQUFBLE1BQUEsTUFBQSxHQUFBLFFBQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLEdBQUEsR0FhRSxTQUFBLEdBQUEsQ0FBQSxNQUFBLEVBQXNCO0FBQ3BCLFNBQUEsS0FBQSxDQUFBLElBQUEsQ0FBQSxNQUFBO0FBZEosR0FBQTs7QUFBQSxFQUFBLE1BQUEsQ0FBQSxjQUFBLEdBaUJFLFNBQUEsY0FBQSxDQUFBLFFBQUEsRUFBbUM7QUFDakMsUUFBSSxLQUFBLEtBQUEsQ0FBQSxNQUFBLEtBQUosQ0FBQSxFQUE2QjtBQUMzQixhQUFBLFFBQUE7QUFERixLQUFBLE1BRU87QUFDTCxVQUFJLEtBQUssR0FBRyxLQUFBLEtBQUEsQ0FBWixDQUFZLENBQVo7QUFDQSxVQUFJLElBQUksR0FBRyxLQUFBLEtBQUEsQ0FBVyxLQUFBLEtBQUEsQ0FBQSxNQUFBLEdBQXRCLENBQVcsQ0FBWDtBQUVBLGFBQU8sS0FBSyxDQUFMLE1BQUEsQ0FBUCxJQUFPLENBQVA7QUFDRDtBQXpCTCxHQUFBOztBQUFBLFNBQUEsUUFBQTtBQUFBLENBQUEsRUFBQTs7OztBQStCTSxTQUFBLEdBQUEsQ0FBQSxJQUFBLEVBQWlDO0FBQ3JDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBSixJQUFJLENBQUosRUFBeUI7QUFDdkIsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFoQixDQUFnQixDQUFoQjtBQUNBLFFBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUosTUFBQSxHQUFoQixDQUFlLENBQWY7QUFFQSxXQUFPLEdBQUcsQ0FBSCxLQUFHLENBQUgsQ0FBQSxNQUFBLENBQWtCLEdBQUcsQ0FBNUIsSUFBNEIsQ0FBckIsQ0FBUDtBQUpGLEdBQUEsTUFLTyxJQUFJLElBQUksWUFBUixnQkFBQSxFQUFnQztBQUNyQyxXQUFBLElBQUE7QUFESyxHQUFBLE1BRUE7QUFDTCxXQUFPLElBQUksQ0FBWCxHQUFBO0FBQ0Q7QUFDRjs7QUFJSyxTQUFBLE9BQUEsQ0FBQSxJQUFBLEVBQTBDO0FBQzlDLE1BQUksS0FBSyxDQUFMLE9BQUEsQ0FBQSxJQUFBLEtBQXVCLElBQUksQ0FBSixNQUFBLEtBQTNCLENBQUEsRUFBOEM7QUFDNUMsV0FBQSxLQUFBO0FBQ0Q7O0FBRUQsU0FBQSxJQUFBO0FBQ0Q7O0FBRUssU0FBQSxRQUFBLENBQUEsUUFBQSxFQUFBLFFBQUEsRUFBcUU7QUFDekUsTUFBSSxPQUFPLENBQVgsUUFBVyxDQUFYLEVBQXVCO0FBQ3JCLFdBQU8sR0FBRyxDQUFWLFFBQVUsQ0FBVjtBQURGLEdBQUEsTUFFTztBQUNMLFdBQUEsUUFBQTtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgdHlwZSB7IFByZXNlbnRBcnJheSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBMb2NhdGVkV2l0aE9wdGlvbmFsU3BhbiwgTG9jYXRlZFdpdGhTcGFuIH0gZnJvbSAnLi9sb2NhdGlvbic7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuL3NwYW4nO1xuXG5leHBvcnQgdHlwZSBIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoU3BhbiB8IFByZXNlbnRBcnJheTxMb2NhdGVkV2l0aFNwYW4+O1xuZXhwb3J0IHR5cGUgTWF5YmVIYXNTcGFuID0gU291cmNlU3BhbiB8IExvY2F0ZWRXaXRoT3B0aW9uYWxTcGFuIHwgTG9jYXRlZFdpdGhPcHRpb25hbFNwYW5bXSB8IG51bGw7XG5cbmV4cG9ydCB0eXBlIFRvU291cmNlT2Zmc2V0ID0gbnVtYmVyIHwgU291cmNlT2Zmc2V0O1xuXG5leHBvcnQgY2xhc3MgU3Bhbkxpc3Qge1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogUHJlc2VudEFycmF5PEhhc1NvdXJjZVNwYW4+KTogU291cmNlU3BhbjtcbiAgc3RhdGljIHJhbmdlKHNwYW46IEhhc1NvdXJjZVNwYW5bXSwgZmFsbGJhY2s6IFNvdXJjZVNwYW4pOiBTb3VyY2VTcGFuO1xuICBzdGF0aWMgcmFuZ2Uoc3BhbjogSGFzU291cmNlU3BhbltdLCBmYWxsYmFjazogU291cmNlU3BhbiA9IFNvdXJjZVNwYW4uTk9OX0VYSVNURU5UKTogU291cmNlU3BhbiB7XG4gICAgcmV0dXJuIG5ldyBTcGFuTGlzdChzcGFuLm1hcChsb2MpKS5nZXRSYW5nZU9mZnNldChmYWxsYmFjayk7XG4gIH1cblxuICBfc3BhbjogU291cmNlU3BhbltdO1xuXG4gIGNvbnN0cnVjdG9yKHNwYW46IFNvdXJjZVNwYW5bXSA9IFtdKSB7XG4gICAgdGhpcy5fc3BhbiA9IHNwYW47XG4gIH1cblxuICBhZGQob2Zmc2V0OiBTb3VyY2VTcGFuKTogdm9pZCB7XG4gICAgdGhpcy5fc3Bhbi5wdXNoKG9mZnNldCk7XG4gIH1cblxuICBnZXRSYW5nZU9mZnNldChmYWxsYmFjazogU291cmNlU3Bhbik6IFNvdXJjZVNwYW4ge1xuICAgIGlmICh0aGlzLl9zcGFuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZmlyc3QgPSB0aGlzLl9zcGFuWzBdO1xuICAgICAgbGV0IGxhc3QgPSB0aGlzLl9zcGFuW3RoaXMuX3NwYW4ubGVuZ3RoIC0gMV07XG5cbiAgICAgIHJldHVybiBmaXJzdC5leHRlbmQobGFzdCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIEhhc1NvdXJjZVNwYW4gPSB7IGxvYzogU291cmNlU3BhbiB9IHwgU291cmNlU3BhbiB8IFtIYXNTb3VyY2VTcGFuLCAuLi5IYXNTb3VyY2VTcGFuW11dO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9jKHNwYW46IEhhc1NvdXJjZVNwYW4pOiBTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikpIHtcbiAgICBsZXQgZmlyc3QgPSBzcGFuWzBdO1xuICAgIGxldCBsYXN0ID0gc3BhbltzcGFuLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGxvYyhmaXJzdCkuZXh0ZW5kKGxvYyhsYXN0KSk7XG4gIH0gZWxzZSBpZiAoc3BhbiBpbnN0YW5jZW9mIFNvdXJjZVNwYW4pIHtcbiAgICByZXR1cm4gc3BhbjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3Bhbi5sb2M7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgTWF5YmVIYXNTb3VyY2VTcGFuID0geyBsb2M6IFNvdXJjZVNwYW4gfSB8IFNvdXJjZVNwYW4gfCBNYXliZUhhc1NvdXJjZVNwYW5bXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc1NwYW4oc3BhbjogTWF5YmVIYXNTb3VyY2VTcGFuKTogc3BhbiBpcyBIYXNTb3VyY2VTcGFuIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3BhbikgJiYgc3Bhbi5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1heWJlTG9jKGxvY2F0aW9uOiBNYXliZUhhc1NvdXJjZVNwYW4sIGZhbGxiYWNrOiBTb3VyY2VTcGFuKTogU291cmNlU3BhbiB7XG4gIGlmIChoYXNTcGFuKGxvY2F0aW9uKSkge1xuICAgIHJldHVybiBsb2MobG9jYXRpb24pO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==