starlight-cli 1.0.40 → 1.0.41

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/index.js CHANGED
@@ -1404,6 +1404,41 @@ class Evaluator {
1404
1404
  });
1405
1405
  this.global.define('keys', arg => arg && typeof arg === 'object' ? Object.keys(arg) : []);
1406
1406
  this.global.define('values', arg => arg && typeof arg === 'object' ? Object.values(arg) : []);
1407
+ this.global.define('range', (...args) => {
1408
+ let start = 0;
1409
+ let end = 0;
1410
+ let step = 1;
1411
+
1412
+ if (args.length === 1) {
1413
+ end = Number(args[0]);
1414
+ } else if (args.length === 2) {
1415
+ start = Number(args[0]);
1416
+ end = Number(args[1]);
1417
+ } else if (args.length === 3) {
1418
+ start = Number(args[0]);
1419
+ end = Number(args[1]);
1420
+ step = Number(args[2]);
1421
+ } else {
1422
+ throw new Error('range() expects 1 to 3 arguments');
1423
+ }
1424
+
1425
+ if (step === 0) {
1426
+ throw new Error('range() step cannot be 0');
1427
+ }
1428
+
1429
+ const result = [];
1430
+ if (step > 0) {
1431
+ for (let i = start; i < end; i += step) {
1432
+ result.push(i);
1433
+ }
1434
+ } else {
1435
+ for (let i = start; i > end; i += step) {
1436
+ result.push(i);
1437
+ }
1438
+ }
1439
+
1440
+ return result;
1441
+ });
1407
1442
 
1408
1443
  this.global.define('ask', prompt => {
1409
1444
  const readlineSync = __nccwpck_require__(552);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starlight-cli",
3
- "version": "1.0.40",
3
+ "version": "1.0.41",
4
4
  "description": "Starlight Programming Language CLI",
5
5
  "bin": {
6
6
  "starlight": "index.js"
package/src/evaluator.js CHANGED
@@ -61,6 +61,41 @@ class Evaluator {
61
61
  });
62
62
  this.global.define('keys', arg => arg && typeof arg === 'object' ? Object.keys(arg) : []);
63
63
  this.global.define('values', arg => arg && typeof arg === 'object' ? Object.values(arg) : []);
64
+ this.global.define('range', (...args) => {
65
+ let start = 0;
66
+ let end = 0;
67
+ let step = 1;
68
+
69
+ if (args.length === 1) {
70
+ end = Number(args[0]);
71
+ } else if (args.length === 2) {
72
+ start = Number(args[0]);
73
+ end = Number(args[1]);
74
+ } else if (args.length === 3) {
75
+ start = Number(args[0]);
76
+ end = Number(args[1]);
77
+ step = Number(args[2]);
78
+ } else {
79
+ throw new Error('range() expects 1 to 3 arguments');
80
+ }
81
+
82
+ if (step === 0) {
83
+ throw new Error('range() step cannot be 0');
84
+ }
85
+
86
+ const result = [];
87
+ if (step > 0) {
88
+ for (let i = start; i < end; i += step) {
89
+ result.push(i);
90
+ }
91
+ } else {
92
+ for (let i = start; i > end; i += step) {
93
+ result.push(i);
94
+ }
95
+ }
96
+
97
+ return result;
98
+ });
64
99
 
65
100
  this.global.define('ask', prompt => {
66
101
  const readlineSync = require('readline-sync');