greybel-interpreter 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cps.js CHANGED
@@ -665,7 +665,7 @@ var CPSMap = function (visit, context) {
665
665
  return new call_1.default(item).prepare(visit);
666
666
  },
667
667
  'CallStatement': function (item) {
668
- return new call_1.default(item).prepare(visit);
668
+ return visit(item.expression);
669
669
  },
670
670
  'FeatureImportExpression': function (item) {
671
671
  return __awaiter(this, void 0, void 0, function () {
@@ -716,7 +716,7 @@ var CPSMap = function (visit, context) {
716
716
  resourceHandler = context.resourceHandler;
717
717
  return [4 /*yield*/, resourceHandler.getTargetRelativeTo(context.target,
718
718
  // @ts-ignore: FileSystemDirectory is always a string
719
- item.fileSystemDirectory.value)];
719
+ item.fileSystemDirectory)];
720
720
  case 1:
721
721
  target = _a.sent();
722
722
  return [4 /*yield*/, context.resourceHandler.get(target)];
@@ -77,7 +77,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
77
77
  };
78
78
  Object.defineProperty(exports, "__esModule", { value: true });
79
79
  exports.ExpressionSegment = void 0;
80
- var greyscript_core_1 = require("greyscript-core");
81
80
  var expression_1 = require("../types/expression");
82
81
  var operation_1 = require("../types/operation");
83
82
  var typer_1 = require("../typer");
@@ -121,24 +120,16 @@ var CallExpression = /** @class */ (function (_super) {
121
120
  me = this;
122
121
  buildExpression = function (node) {
123
122
  return __awaiter(this, void 0, void 0, function () {
124
- var _a, _b, _c;
125
- return __generator(this, function (_d) {
126
- switch (_d.label) {
123
+ var _a, _b;
124
+ return __generator(this, function (_c) {
125
+ switch (_c.label) {
127
126
  case 0:
128
- if (!(greyscript_core_1.ASTType.CallStatement === node.type)) return [3 /*break*/, 1];
129
- return [2 /*return*/, buildExpression(node.expression)];
130
- case 1:
131
- if (!(greyscript_core_1.ASTType.Identifier === node.type)) return [3 /*break*/, 3];
132
127
  _a = ExpressionSegment.bind;
133
- return [4 /*yield*/, visit(node)];
134
- case 2: return [2 /*return*/, new (_a.apply(ExpressionSegment, [void 0, _d.sent(), []]))()];
135
- case 3:
136
- _b = ExpressionSegment.bind;
137
128
  return [4 /*yield*/, visit(node.base)];
138
- case 4:
139
- _c = [void 0, _d.sent()];
129
+ case 1:
130
+ _b = [void 0, _c.sent()];
140
131
  return [4 /*yield*/, Promise.all(node.arguments.map(function (item) { return visit(item); }))];
141
- case 5: return [2 /*return*/, new (_b.apply(ExpressionSegment, _c.concat([_d.sent()])))()];
132
+ case 2: return [2 /*return*/, new (_a.apply(ExpressionSegment, _b.concat([_c.sent()])))()];
142
133
  }
143
134
  });
144
135
  });
@@ -110,12 +110,11 @@ var MapExpression = /** @class */ (function (_super) {
110
110
  return __generator(this, function (_b) {
111
111
  switch (_b.label) {
112
112
  case 0:
113
- _a = {};
114
- return [4 /*yield*/, visit(item.key)];
115
- case 1:
116
- _a.key = _b.sent();
113
+ _a = {
114
+ key: item.key
115
+ };
117
116
  return [4 /*yield*/, visit(item.value)];
118
- case 2: return [2 /*return*/, (_a.value = _b.sent(),
117
+ case 1: return [2 /*return*/, (_a.value = _b.sent(),
119
118
  _a)];
120
119
  }
121
120
  });
@@ -147,12 +146,7 @@ var MapExpression = /** @class */ (function (_super) {
147
146
  current = values_1_1.value;
148
147
  key = void 0;
149
148
  value = void 0;
150
- if ((0, typer_1.isCustomValue)(current.key)) {
151
- key = current.key.valueOf();
152
- }
153
- else {
154
- operationContext.debugger.raise('Unexpected key', me, current.key);
155
- }
149
+ key = current.key;
156
150
  if (!(0, typer_1.isCustomValue)(current.value)) return [3 /*break*/, 3];
157
151
  value = current.value;
158
152
  return [3 /*break*/, 6];
@@ -67,8 +67,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  var typer_1 = require("../typer");
69
69
  var operation_1 = require("../types/operation");
70
- var expression_1 = require("../types/expression");
70
+ var path_1 = __importDefault(require("../expressions/path"));
71
71
  var assign_1 = __importDefault(require("../expressions/assign"));
72
+ var nil_1 = __importDefault(require("../custom-types/nil"));
72
73
  var ArgumentOperation = /** @class */ (function (_super) {
73
74
  __extends(ArgumentOperation, _super);
74
75
  function ArgumentOperation(ast) {
@@ -80,19 +81,19 @@ var ArgumentOperation = /** @class */ (function (_super) {
80
81
  }
81
82
  ArgumentOperation.prototype.get = function (operationContext) {
82
83
  return __awaiter(this, void 0, void 0, function () {
83
- var me, stack, args, stack_1, stack_1_1, entity, _a, _b, _c, _d, e_1_1;
84
- var e_1, _e;
85
- return __generator(this, function (_f) {
86
- switch (_f.label) {
84
+ var me, stack, args, stack_1, stack_1_1, entity, _a, _b, arg, e_1_1;
85
+ var e_1, _c;
86
+ return __generator(this, function (_d) {
87
+ switch (_d.label) {
87
88
  case 0:
88
89
  me = this;
89
90
  stack = me.stack;
90
91
  args = [];
91
- _f.label = 1;
92
+ _d.label = 1;
92
93
  case 1:
93
- _f.trys.push([1, 11, 12, 13]);
94
+ _d.trys.push([1, 11, 12, 13]);
94
95
  stack_1 = __values(stack), stack_1_1 = stack_1.next();
95
- _f.label = 2;
96
+ _d.label = 2;
96
97
  case 2:
97
98
  if (!!stack_1_1.done) return [3 /*break*/, 10];
98
99
  entity = stack_1_1.value;
@@ -103,33 +104,34 @@ var ArgumentOperation = /** @class */ (function (_super) {
103
104
  if (!(entity instanceof assign_1.default)) return [3 /*break*/, 6];
104
105
  return [4 /*yield*/, entity.get(operationContext, me)];
105
106
  case 4:
106
- _f.sent();
107
+ _d.sent();
107
108
  _b = (_a = args).push;
108
109
  return [4 /*yield*/, entity.expr.left.get(operationContext)];
109
110
  case 5:
110
- _b.apply(_a, [_f.sent()]);
111
+ _b.apply(_a, [_d.sent()]);
111
112
  return [3 /*break*/, 9];
112
113
  case 6:
113
- if (!(entity instanceof expression_1.Expression)) return [3 /*break*/, 8];
114
- _d = (_c = args).push;
114
+ if (!(entity instanceof path_1.default)) return [3 /*break*/, 8];
115
115
  return [4 /*yield*/, entity.get(operationContext, me)];
116
116
  case 7:
117
- _d.apply(_c, [_f.sent()]);
117
+ arg = _d.sent();
118
+ operationContext.set(arg.path, new nil_1.default());
119
+ args.push(arg);
118
120
  return [3 /*break*/, 9];
119
121
  case 8:
120
122
  operationContext.debugger.raise('Unexpected argument', me, entity);
121
- _f.label = 9;
123
+ _d.label = 9;
122
124
  case 9:
123
125
  stack_1_1 = stack_1.next();
124
126
  return [3 /*break*/, 2];
125
127
  case 10: return [3 /*break*/, 13];
126
128
  case 11:
127
- e_1_1 = _f.sent();
129
+ e_1_1 = _d.sent();
128
130
  e_1 = { error: e_1_1 };
129
131
  return [3 /*break*/, 13];
130
132
  case 12:
131
133
  try {
132
- if (stack_1_1 && !stack_1_1.done && (_e = stack_1.return)) _e.call(stack_1);
134
+ if (stack_1_1 && !stack_1_1.done && (_c = stack_1.return)) _c.call(stack_1);
133
135
  }
134
136
  finally { if (e_1) throw e_1.error; }
135
137
  return [7 /*endfinally*/];
@@ -54,6 +54,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
54
54
  var operation_1 = require("../types/operation");
55
55
  var uuid_1 = require("uuid");
56
56
  var context_1 = require("../context");
57
+ var typer_1 = require("../typer");
57
58
  var FunctionOperation = /** @class */ (function (_super) {
58
59
  __extends(FunctionOperation, _super);
59
60
  function FunctionOperation(ast, options) {
@@ -111,7 +112,7 @@ var FunctionOperation = /** @class */ (function (_super) {
111
112
  _a.label = 2;
112
113
  case 2:
113
114
  if (!(index < max)) return [3 /*break*/, 5];
114
- if (!incArgs[index]) return [3 /*break*/, 4];
115
+ if (!(incArgs === null || incArgs === void 0 ? void 0 : incArgs[index])) return [3 /*break*/, 4];
115
116
  return [4 /*yield*/, opc.set(args[index].path, incArgs[index])];
116
117
  case 3:
117
118
  _a.sent();
@@ -122,7 +123,7 @@ var FunctionOperation = /** @class */ (function (_super) {
122
123
  case 5: return [4 /*yield*/, me.body.run(opc)];
123
124
  case 6:
124
125
  _a.sent();
125
- return [2 /*return*/, functionContext.value];
126
+ return [2 /*return*/, (0, typer_1.cast)(functionContext.value)];
126
127
  }
127
128
  });
128
129
  });
@@ -66,9 +66,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
66
66
  };
67
67
  Object.defineProperty(exports, "__esModule", { value: true });
68
68
  var operation_1 = require("../types/operation");
69
+ var expression_1 = require("../types/expression");
69
70
  var if_1 = __importDefault(require("./if"));
70
71
  var else_if_1 = __importDefault(require("./else-if"));
71
72
  var else_1 = __importDefault(require("./else"));
73
+ var typer_1 = require("../typer");
72
74
  var IfStatementOperation = /** @class */ (function (_super) {
73
75
  __extends(IfStatementOperation, _super);
74
76
  function IfStatementOperation(ast) {
@@ -80,7 +82,7 @@ var IfStatementOperation = /** @class */ (function (_super) {
80
82
  }
81
83
  IfStatementOperation.prototype.run = function (operationContext) {
82
84
  return __awaiter(this, void 0, void 0, function () {
83
- var me, clauses, clauses_1, clauses_1_1, clause, isValid, e_1_1;
85
+ var me, clauses, clauses_1, clauses_1_1, clause, condition, isValid, e_1_1;
84
86
  var e_1, _a;
85
87
  return __generator(this, function (_b) {
86
88
  switch (_b.label) {
@@ -89,46 +91,59 @@ var IfStatementOperation = /** @class */ (function (_super) {
89
91
  clauses = me.clauses;
90
92
  _b.label = 1;
91
93
  case 1:
92
- _b.trys.push([1, 11, 12, 13]);
94
+ _b.trys.push([1, 14, 15, 16]);
93
95
  clauses_1 = __values(clauses), clauses_1_1 = clauses_1.next();
94
96
  _b.label = 2;
95
97
  case 2:
96
- if (!!clauses_1_1.done) return [3 /*break*/, 10];
98
+ if (!!clauses_1_1.done) return [3 /*break*/, 13];
97
99
  clause = clauses_1_1.value;
98
- if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/, 6];
99
- return [4 /*yield*/, clause.condition.get(operationContext)];
100
+ if (!(clause instanceof if_1.default || clause instanceof else_if_1.default)) return [3 /*break*/, 9];
101
+ condition = clause.condition;
102
+ isValid = void 0;
103
+ if (!(0, typer_1.isCustomValue)(condition)) return [3 /*break*/, 3];
104
+ isValid = condition.valueOf();
105
+ return [3 /*break*/, 6];
100
106
  case 3:
101
- isValid = _b.sent();
102
- if (!isValid.valueOf()) return [3 /*break*/, 5];
103
- return [4 /*yield*/, clause.body.run(operationContext)];
107
+ if (!(condition instanceof expression_1.Expression ||
108
+ condition instanceof operation_1.Operation)) return [3 /*break*/, 5];
109
+ return [4 /*yield*/, condition.get(operationContext)];
104
110
  case 4:
105
- _b.sent();
106
- return [3 /*break*/, 10];
107
- case 5: return [3 /*break*/, 9];
111
+ isValid = _b.sent();
112
+ return [3 /*break*/, 6];
113
+ case 5:
114
+ operationContext.debugger.raise('Unexpected condition in clause', me, clause.condition);
115
+ _b.label = 6;
108
116
  case 6:
109
- if (!(clause instanceof else_1.default)) return [3 /*break*/, 8];
117
+ if (!isValid.valueOf()) return [3 /*break*/, 8];
110
118
  return [4 /*yield*/, clause.body.run(operationContext)];
111
119
  case 7:
112
120
  _b.sent();
113
- return [3 /*break*/, 10];
114
- case 8:
115
- operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
116
- _b.label = 9;
121
+ return [3 /*break*/, 13];
122
+ case 8: return [3 /*break*/, 12];
117
123
  case 9:
124
+ if (!(clause instanceof else_1.default)) return [3 /*break*/, 11];
125
+ return [4 /*yield*/, clause.body.run(operationContext)];
126
+ case 10:
127
+ _b.sent();
128
+ return [3 /*break*/, 13];
129
+ case 11:
130
+ operationContext.debugger.raise('Invalid operation in if statement.', me, clause);
131
+ _b.label = 12;
132
+ case 12:
118
133
  clauses_1_1 = clauses_1.next();
119
134
  return [3 /*break*/, 2];
120
- case 10: return [3 /*break*/, 13];
121
- case 11:
135
+ case 13: return [3 /*break*/, 16];
136
+ case 14:
122
137
  e_1_1 = _b.sent();
123
138
  e_1 = { error: e_1_1 };
124
- return [3 /*break*/, 13];
125
- case 12:
139
+ return [3 /*break*/, 16];
140
+ case 15:
126
141
  try {
127
142
  if (clauses_1_1 && !clauses_1_1.done && (_a = clauses_1.return)) _a.call(clauses_1);
128
143
  }
129
144
  finally { if (e_1) throw e_1.error; }
130
145
  return [7 /*endfinally*/];
131
- case 13: return [2 /*return*/];
146
+ case 16: return [2 /*return*/];
132
147
  }
133
148
  });
134
149
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-interpreter",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",
@@ -34,8 +34,8 @@
34
34
  "typescript": "^4.5.4"
35
35
  },
36
36
  "dependencies": {
37
- "greybel-core": "^0.2.0",
38
- "greyscript-core": "^0.1.8",
37
+ "greybel-core": "^0.2.1",
38
+ "greyscript-core": "^0.2.1",
39
39
  "uuid": "^8.3.2"
40
40
  },
41
41
  "keywords": [