legacy-interop.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import b from './public-builders';
  2. export class PathExpressionImplV1 {
  3. constructor(original, head, tail, loc) {
  4. this.original = original;
  5. this.loc = loc;
  6. this.type = 'PathExpression';
  7. this.this = false;
  8. this.data = false;
  9. let parts = tail.slice();
  10. if (head.type === 'ThisHead') {
  11. this.this = true;
  12. } else if (head.type === 'AtHead') {
  13. this.data = true;
  14. parts.unshift(head.name.slice(1));
  15. } else {
  16. parts.unshift(head.name);
  17. }
  18. this.parts = parts;
  19. }
  20. get head() {
  21. let firstPart;
  22. if (this.this) {
  23. firstPart = 'this';
  24. } else if (this.data) {
  25. firstPart = `@${this.parts[0]}`;
  26. } else {
  27. firstPart = this.parts[0];
  28. }
  29. let firstPartLoc = this.loc.collapse('start').sliceStartChars({
  30. chars: firstPart.length
  31. }).loc;
  32. return b.head(firstPart, firstPartLoc);
  33. }
  34. get tail() {
  35. return this.this ? this.parts : this.parts.slice(1);
  36. }
  37. }
  38. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdjEvbGVnYWN5LWludGVyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxDQUFQLE1BQWMsbUJBQWQ7QUFFQSxPQUFNLE1BQU8sb0JBQVAsQ0FBMkI7QUFNL0IsRUFBQSxXQUFBLENBQW1CLFFBQW5CLEVBQXFDLElBQXJDLEVBQXFELElBQXJELEVBQTRFLEdBQTVFLEVBQTJGO0FBQXhFLFNBQUEsUUFBQSxHQUFBLFFBQUE7QUFBeUQsU0FBQSxHQUFBLEdBQUEsR0FBQTtBQUw1RSxTQUFBLElBQUEsR0FBeUIsZ0JBQXpCO0FBRU8sU0FBQSxJQUFBLEdBQU8sS0FBUDtBQUNBLFNBQUEsSUFBQSxHQUFPLEtBQVA7QUFHTCxRQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBTCxFQUFaOztBQUVBLFFBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxVQUFsQixFQUE4QjtBQUM1QixXQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUksSUFBSSxDQUFDLElBQUwsS0FBYyxRQUFsQixFQUE0QjtBQUNqQyxXQUFLLElBQUwsR0FBWSxJQUFaO0FBQ0EsTUFBQSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFMLENBQVUsS0FBVixDQUFnQixDQUFoQixDQUFkO0FBQ0QsS0FITSxNQUdBO0FBQ0wsTUFBQSxLQUFLLENBQUMsT0FBTixDQUFjLElBQUksQ0FBQyxJQUFuQjtBQUNEOztBQUVELFNBQUssS0FBTCxHQUFhLEtBQWI7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFFBQUksU0FBSjs7QUFFQSxRQUFJLEtBQUssSUFBVCxFQUFlO0FBQ2IsTUFBQSxTQUFTLEdBQUcsTUFBWjtBQUNELEtBRkQsTUFFTyxJQUFJLEtBQUssSUFBVCxFQUFlO0FBQ3BCLE1BQUEsU0FBUyxHQUFHLElBQUksS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFhLEVBQTdCO0FBQ0QsS0FGTSxNQUVBO0FBQ0wsTUFBQSxTQUFTLEdBQUcsS0FBSyxLQUFMLENBQVcsQ0FBWCxDQUFaO0FBQ0Q7O0FBRUQsUUFBSSxZQUFZLEdBQUcsS0FBSyxHQUFMLENBQVMsUUFBVCxDQUFrQixPQUFsQixFQUEyQixlQUEzQixDQUEyQztBQUM1RCxNQUFBLEtBQUssRUFBRSxTQUFTLENBQUM7QUFEMkMsS0FBM0MsRUFFaEIsR0FGSDtBQUlBLFdBQU8sQ0FBQyxDQUFDLElBQUYsQ0FBTyxTQUFQLEVBQWtCLFlBQWxCLENBQVA7QUFDRDs7QUFFRCxNQUFJLElBQUosR0FBUTtBQUNOLFdBQU8sS0FBSyxJQUFMLEdBQVksS0FBSyxLQUFqQixHQUF5QixLQUFLLEtBQUwsQ0FBVyxLQUFYLENBQWlCLENBQWpCLENBQWhDO0FBQ0Q7O0FBekM4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvdXJjZVNwYW4gfSBmcm9tICcuLi9zb3VyY2Uvc3Bhbic7XG5pbXBvcnQgeyBQYXRoRXhwcmVzc2lvbiwgUGF0aEhlYWQgfSBmcm9tICcuL25vZGVzLXYxJztcbmltcG9ydCBiIGZyb20gJy4vcHVibGljLWJ1aWxkZXJzJztcblxuZXhwb3J0IGNsYXNzIFBhdGhFeHByZXNzaW9uSW1wbFYxIGltcGxlbWVudHMgUGF0aEV4cHJlc3Npb24ge1xuICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nID0gJ1BhdGhFeHByZXNzaW9uJztcbiAgcHVibGljIHBhcnRzOiBzdHJpbmdbXTtcbiAgcHVibGljIHRoaXMgPSBmYWxzZTtcbiAgcHVibGljIGRhdGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3JpZ2luYWw6IHN0cmluZywgaGVhZDogUGF0aEhlYWQsIHRhaWw6IHN0cmluZ1tdLCBwdWJsaWMgbG9jOiBTb3VyY2VTcGFuKSB7XG4gICAgbGV0IHBhcnRzID0gdGFpbC5zbGljZSgpO1xuXG4gICAgaWYgKGhlYWQudHlwZSA9PT0gJ1RoaXNIZWFkJykge1xuICAgICAgdGhpcy50aGlzID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhlYWQudHlwZSA9PT0gJ0F0SGVhZCcpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRydWU7XG4gICAgICBwYXJ0cy51bnNoaWZ0KGhlYWQubmFtZS5zbGljZSgxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoaGVhZC5uYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICBnZXQgaGVhZCgpOiBQYXRoSGVhZCB7XG4gICAgbGV0IGZpcnN0UGFydDogc3RyaW5nO1xuXG4gICAgaWYgKHRoaXMudGhpcykge1xuICAgICAgZmlyc3RQYXJ0ID0gJ3RoaXMnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBmaXJzdFBhcnQgPSBgQCR7dGhpcy5wYXJ0c1swXX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaXJzdFBhcnQgPSB0aGlzLnBhcnRzWzBdO1xuICAgIH1cblxuICAgIGxldCBmaXJzdFBhcnRMb2MgPSB0aGlzLmxvYy5jb2xsYXBzZSgnc3RhcnQnKS5zbGljZVN0YXJ0Q2hhcnMoe1xuICAgICAgY2hhcnM6IGZpcnN0UGFydC5sZW5ndGgsXG4gICAgfSkubG9jO1xuXG4gICAgcmV0dXJuIGIuaGVhZChmaXJzdFBhcnQsIGZpcnN0UGFydExvYyk7XG4gIH1cblxuICBnZXQgdGFpbCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMudGhpcyA/IHRoaXMucGFydHMgOiB0aGlzLnBhcnRzLnNsaWNlKDEpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9