UNPKG

@glimmer/syntax

Version:
51 lines (42 loc) 4.83 kB
import b from './public-builders'; export class PathExpressionImplV1 { constructor(original, head, tail, loc) { this.original = original; this.loc = loc; this.type = 'PathExpression'; this.this = false; this.data = false; // Cache for the head value. this._head = undefined; let parts = tail.slice(); if (head.type === 'ThisHead') { this.this = true; } else if (head.type === 'AtHead') { this.data = true; parts.unshift(head.name.slice(1)); } else { parts.unshift(head.name); } this.parts = parts; } get head() { if (this._head) { return this._head; } let firstPart; if (this.this) { firstPart = 'this'; } else if (this.data) { firstPart = `@${this.parts[0]}`; } else { firstPart = this.parts[0]; } let firstPartLoc = this.loc.collapse('start').sliceStartChars({ chars: firstPart.length }).loc; return this._head = b.head(firstPart, firstPartLoc); } get tail() { return this.this ? this.parts : this.parts.slice(1); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxDQUFQLE1BQWMsbUJBQWQ7QUFFQSxPQUFNLE1BQU8sb0JBQVAsQ0FBMkI7QUFNL0IsRUFBQSxXQUFBLENBQW1CLFFBQW5CLEVBQXFDLElBQXJDLEVBQXFELElBQXJELEVBQTRFLEdBQTVFLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBeUIsZ0JBQXpCO0FBRU8sU0FBQSxJQUFBLEdBQU8sS0FBUDtBQUNBLFNBQUEsSUFBQSxHQUFPLEtBQVAsQ0FFb0YsQ0FlM0Y7O0FBQ0EsU0FBQSxLQUFBLEdBQW1CLFNBQW5CO0FBZkUsUUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUwsRUFBWjs7QUFFQSxRQUFJLElBQUksQ0FBQyxJQUFMLEtBQWMsVUFBbEIsRUFBOEI7QUFDNUIsV0FBSyxJQUFMLEdBQVksSUFBWjtBQUNELEtBRkQsTUFFTyxJQUFJLElBQUksQ0FBQyxJQUFMLEtBQWMsUUFBbEIsRUFBNEI7QUFDakMsV0FBSyxJQUFMLEdBQVksSUFBWjtBQUNBLE1BQUEsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBTCxDQUFVLEtBQVYsQ0FBZ0IsQ0FBaEIsQ0FBZDtBQUNELEtBSE0sTUFHQTtBQUNMLE1BQUEsS0FBSyxDQUFDLE9BQU4sQ0FBYyxJQUFJLENBQUMsSUFBbkI7QUFDRDs7QUFFRCxTQUFLLEtBQUwsR0FBYSxLQUFiO0FBQ0Q7O0FBS0QsTUFBSSxJQUFKLEdBQVE7QUFDTixRQUFJLEtBQUssS0FBVCxFQUFnQjtBQUNkLGFBQU8sS0FBSyxLQUFaO0FBQ0Q7O0FBRUQsUUFBSSxTQUFKOztBQUVBLFFBQUksS0FBSyxJQUFULEVBQWU7QUFDYixNQUFBLFNBQVMsR0FBRyxNQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUksS0FBSyxJQUFULEVBQWU7QUFDcEIsTUFBQSxTQUFTLEdBQUcsSUFBSSxLQUFLLEtBQUwsQ0FBVyxDQUFYLENBQWEsRUFBN0I7QUFDRCxLQUZNLE1BRUE7QUFDTCxNQUFBLFNBQVMsR0FBRyxLQUFLLEtBQUwsQ0FBVyxDQUFYLENBQVo7QUFDRDs7QUFFRCxRQUFJLFlBQVksR0FBRyxLQUFLLEdBQUwsQ0FBUyxRQUFULENBQWtCLE9BQWxCLEVBQTJCLGVBQTNCLENBQTJDO0FBQzVELE1BQUEsS0FBSyxFQUFFLFNBQVMsQ0FBQztBQUQyQyxLQUEzQyxFQUVoQixHQUZIO0FBSUEsV0FBUSxLQUFLLEtBQUwsR0FBYSxDQUFDLENBQUMsSUFBRixDQUFPLFNBQVAsRUFBa0IsWUFBbEIsQ0FBckI7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFdBQU8sS0FBSyxJQUFMLEdBQVksS0FBSyxLQUFqQixHQUF5QixLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLENBQWpCLENBQWhDO0FBQ0Q7O0FBaEQ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBQYXRoRXhwcmVzc2lvbiwgUGF0aEhlYWQgfSBmcm9tICcuL25vZGVzLXYxJztcbmltcG9ydCBiIGZyb20gJy4vcHVibGljLWJ1aWxkZXJzJztcblxuZXhwb3J0IGNsYXNzIFBhdGhFeHByZXNzaW9uSW1wbFYxIGltcGxlbWVudHMgUGF0aEV4cHJlc3Npb24ge1xuICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nID0gJ1BhdGhFeHByZXNzaW9uJztcbiAgcHVibGljIHBhcnRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHRoaXMgPSBmYWxzZTtcbiAgcHVibGljIGRhdGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JpZ2luYWw6IHN0cmluZywgaGVhZDogUGF0aEhlYWQsIHRhaWw6IHN0cmluZ1tdLCBwdWJsaWMgbG9jOiBTb3VyY2VTcGFuKSB7XG4gICAgbGV0IHBhcnRzID0gdGFpbC5zbGljZSgpO1xuXG4gICAgaWYgKGhlYWQudHlwZSA9PT0gJ1RoaXNIZWFkJykge1xuICAgICAgdGhpcy50aGlzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhlYWQudHlwZSA9PT0gJ0F0SGVhZCcpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRydWU7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZS5zbGljZSgxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICAvLyBDYWNoZSBmb3IgdGhlIGhlYWQgdmFsdWUuXG4gIF9oZWFkPzogUGF0aEhlYWQgPSB1bmRlZmluZWQ7XG5cbiAgZ2V0IGhlYWQoKTogUGF0aEhlYWQge1xuICAgIGlmICh0aGlzLl9oZWFkKSB7XG4gICAgICByZXR1cm4gdGhpcy5faGVhZDtcbiAgICB9XG5cbiAgICBsZXQgZmlyc3RQYXJ0OiBzdHJpbmc7XG5cbiAgICBpZiAodGhpcy50aGlzKSB7XG4gICAgICBmaXJzdFBhcnQgPSAndGhpcyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIGZpcnN0UGFydCA9IGBAJHt0aGlzLnBhcnRzWzBdfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0UGFydCA9IHRoaXMucGFydHNbMF07XG4gICAgfVxuXG4gICAgbGV0IGZpcnN0UGFydExvYyA9IHRoaXMubG9jLmNvbGxhcHNlKCdzdGFydCcpLnNsaWNlU3RhcnRDaGFycyh7XG4gICAgICBjaGFyczogZmlyc3RQYXJ0Lmxlbmd0aCxcbiAgICB9KS5sb2M7XG5cbiAgICByZXR1cm4gKHRoaXMuX2hlYWQgPSBiLmhlYWQoZmlyc3RQYXJ0LCBmaXJzdFBhcnRMb2MpKTtcbiAgfVxuXG4gIGdldCB0YWlsKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy50aGlzID8gdGhpcy5wYXJ0cyA6IHRoaXMucGFydHMuc2xpY2UoMSk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=