range-pie 2.2.0 → 2.4.0
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/README.md +72 -0
- package/dist/py-range.d.ts +38 -0
- package/dist/py-range.js +83 -0
- package/examples/array-methods.js +17 -0
- package/package.json +13 -5
- package/dist/index.js.map +0 -1
- package/dist/py-range.js.map +0 -1
package/README.md
CHANGED
|
@@ -30,7 +30,11 @@ A TypeScript/JavaScript library that brings Python's range functionality to Java
|
|
|
30
30
|
- [indexOf()](#indexof)
|
|
31
31
|
- [lastIndexOf()](#lastindexof)
|
|
32
32
|
- [pop()](#pop)
|
|
33
|
+
- [slice()](#slice)
|
|
33
34
|
- [reverse()](#reverse)
|
|
35
|
+
- [entries()](#entries)
|
|
36
|
+
- [keys()](#keys)
|
|
37
|
+
- [values()](#values)
|
|
34
38
|
|
|
35
39
|
- [Advanced Usage](#advanced-usage)
|
|
36
40
|
|
|
@@ -44,6 +48,7 @@ A TypeScript/JavaScript library that brings Python's range functionality to Java
|
|
|
44
48
|
- [Example Files](#example-files)
|
|
45
49
|
- [Running the Examples](#running-the-examples)
|
|
46
50
|
- [Available Examples](#available-examples)
|
|
51
|
+
- [Method-Specific Demonstrations](#method-specific-demonstrations)
|
|
47
52
|
|
|
48
53
|
## Installation
|
|
49
54
|
|
|
@@ -72,6 +77,10 @@ console.log([...range2]); // [2, 3, 4, 5, 6, 7]
|
|
|
72
77
|
// Create a range with step
|
|
73
78
|
const range3 = new PyRange(0, 10, 2);
|
|
74
79
|
console.log([...range3]); // [0, 2, 4, 6, 8]
|
|
80
|
+
|
|
81
|
+
// Create a reverse range
|
|
82
|
+
const range4 = new PyRange(5, 2);
|
|
83
|
+
console.log([...range4]); // [5, 4, 3]
|
|
75
84
|
```
|
|
76
85
|
|
|
77
86
|
### TypeScript
|
|
@@ -306,6 +315,23 @@ console.log(range.pop()); // 4
|
|
|
306
315
|
console.log([...range]); // [1, 2, 3]
|
|
307
316
|
```
|
|
308
317
|
|
|
318
|
+
### slice()
|
|
319
|
+
|
|
320
|
+
This method behaves similarly to [**`Array.prototype.slice`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice).
|
|
321
|
+
It returns a new PyRange instance containing elements from the specified indices.
|
|
322
|
+
The original range is not modified.
|
|
323
|
+
|
|
324
|
+
```javascript
|
|
325
|
+
const range = new PyRange(0, 10); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
326
|
+
const sliced = range.slice(2, 5);
|
|
327
|
+
console.log([...sliced]); // [2, 3, 4]
|
|
328
|
+
console.log([...range]); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (unchanged)
|
|
329
|
+
|
|
330
|
+
// Negative indices are supported
|
|
331
|
+
const lastThree = range.slice(-3);
|
|
332
|
+
console.log([...lastThree]); // [7, 8, 9]
|
|
333
|
+
```
|
|
334
|
+
|
|
309
335
|
### reverse()
|
|
310
336
|
|
|
311
337
|
It works the same as [**`Array.prototype.reverse`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
|
|
@@ -322,6 +348,41 @@ const reversedStep = rangeWithStep.reverse(); // [9, 7, 5, 3, 1]
|
|
|
322
348
|
console.log([...reversedStep]);
|
|
323
349
|
```
|
|
324
350
|
|
|
351
|
+
### entries()
|
|
352
|
+
|
|
353
|
+
It works the same as [**`Array.prototype.entries`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries).
|
|
354
|
+
It returns an iterator of `[index, value]` pairs.
|
|
355
|
+
|
|
356
|
+
```javascript
|
|
357
|
+
const range = new PyRange(1, 4); // [1, 2, 3]
|
|
358
|
+
for (const [index, value] of range.entries()) {
|
|
359
|
+
console.log(index, value);
|
|
360
|
+
}
|
|
361
|
+
// 0 1
|
|
362
|
+
// 1 2
|
|
363
|
+
// 2 3
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### keys()
|
|
367
|
+
|
|
368
|
+
It works the same as [**`Array.prototype.keys`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/keys).
|
|
369
|
+
It returns an iterator of the indices of the range.
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
const range = new PyRange(3); // [0, 1, 2]
|
|
373
|
+
console.log([...range.keys()]); // [0, 1, 2]
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### values()
|
|
377
|
+
|
|
378
|
+
It works the same as [**`Array.prototype.values`**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/values).
|
|
379
|
+
It returns an iterator of the values in the range.
|
|
380
|
+
|
|
381
|
+
```javascript
|
|
382
|
+
const range = new PyRange(3); // [0, 1, 2]
|
|
383
|
+
console.log([...range.values()]); // [0, 1, 2]
|
|
384
|
+
```
|
|
385
|
+
|
|
325
386
|
## Advanced Usage
|
|
326
387
|
|
|
327
388
|
### Iteration
|
|
@@ -432,3 +493,14 @@ ts-node node_modules/range-pie/examples/typescript-usage.ts
|
|
|
432
493
|
- **array-methods.js**: Demonstrates all array-like methods
|
|
433
494
|
- **advanced-usage.js**: Covers advanced features like method chaining and proxy usage
|
|
434
495
|
- **typescript-usage.ts**: Shows TypeScript-specific features and type safety
|
|
496
|
+
|
|
497
|
+
#### Method-Specific Demonstrations
|
|
498
|
+
|
|
499
|
+
For detailed demonstrations of individual methods, see the `examples/methods/` folder. Each method has its own comprehensive demo file with detailed explanations and use cases.
|
|
500
|
+
|
|
501
|
+
```bash
|
|
502
|
+
# Run all method demonstrations
|
|
503
|
+
npm run example:methods
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
For instructions on running individual method demos and more details, see the [README in the examples/methods folder](examples/methods/README.md).
|
package/dist/py-range.d.ts
CHANGED
|
@@ -174,11 +174,49 @@ declare class PyRange implements Iterable<number> {
|
|
|
174
174
|
* range is empty.
|
|
175
175
|
*/
|
|
176
176
|
pop(): number | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* Returns a new PyRange instance containing elements from the specified indices.
|
|
179
|
+
*
|
|
180
|
+
* This method behaves similarly to `Array.prototype.slice`. It creates a new
|
|
181
|
+
* PyRange with elements from `begin` to `end` (exclusive) based on the given
|
|
182
|
+
* parameters. Negative indices are supported. The original range is not modified.
|
|
183
|
+
*
|
|
184
|
+
* @param {number} [begin=0] - Zero-based index at which to begin slicing.
|
|
185
|
+
* @param {number} [end=this.length] - Zero-based index at which to end slicing
|
|
186
|
+
* (exclusive).
|
|
187
|
+
* @returns {PyRange} A new PyRange instance containing the sliced elements.
|
|
188
|
+
*/
|
|
189
|
+
slice(begin?: number, end?: number): PyRange;
|
|
177
190
|
/**
|
|
178
191
|
* Reverses the order of the elements in this range, returning a new PyRange object.
|
|
179
192
|
* @returns {PyRange} A new PyRange object with the elements in reverse order.
|
|
180
193
|
*/
|
|
181
194
|
reverse(): PyRange;
|
|
195
|
+
/**
|
|
196
|
+
* Returns an iterator of `[index, value]` pairs for each element in the range.
|
|
197
|
+
*
|
|
198
|
+
* This method behaves like `Array.prototype.entries()` and is useful for
|
|
199
|
+
* iterating over both the index and value of each item.
|
|
200
|
+
*
|
|
201
|
+
* @returns {IterableIterator<[number, number]>} Iterator of index/value pairs.
|
|
202
|
+
*/
|
|
203
|
+
entries(): IterableIterator<[number, number]>;
|
|
204
|
+
/**
|
|
205
|
+
* Returns an iterator of the indices for each element in the range.
|
|
206
|
+
*
|
|
207
|
+
* Works the same as `Array.prototype.keys()`.
|
|
208
|
+
*
|
|
209
|
+
* @returns {IterableIterator<number>} Iterator of indices.
|
|
210
|
+
*/
|
|
211
|
+
keys(): IterableIterator<number>;
|
|
212
|
+
/**
|
|
213
|
+
* Returns an iterator of the values in the range.
|
|
214
|
+
*
|
|
215
|
+
* Equivalent to `Array.prototype.values()`.
|
|
216
|
+
*
|
|
217
|
+
* @returns {IterableIterator<number>} Iterator of values.
|
|
218
|
+
*/
|
|
219
|
+
values(): IterableIterator<number>;
|
|
182
220
|
/**
|
|
183
221
|
* Implements the iterable protocol for this range.
|
|
184
222
|
* @returns {Iterator<number>} An iterator for this range.
|
package/dist/py-range.js
CHANGED
|
@@ -323,6 +323,54 @@ class PyRange {
|
|
|
323
323
|
this._length--;
|
|
324
324
|
return lastValue;
|
|
325
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* Returns a new PyRange instance containing elements from the specified indices.
|
|
328
|
+
*
|
|
329
|
+
* This method behaves similarly to `Array.prototype.slice`. It creates a new
|
|
330
|
+
* PyRange with elements from `begin` to `end` (exclusive) based on the given
|
|
331
|
+
* parameters. Negative indices are supported. The original range is not modified.
|
|
332
|
+
*
|
|
333
|
+
* @param {number} [begin=0] - Zero-based index at which to begin slicing.
|
|
334
|
+
* @param {number} [end=this.length] - Zero-based index at which to end slicing
|
|
335
|
+
* (exclusive).
|
|
336
|
+
* @returns {PyRange} A new PyRange instance containing the sliced elements.
|
|
337
|
+
*/
|
|
338
|
+
slice(begin = 0, end = this._length) {
|
|
339
|
+
if (typeof begin !== "number" || typeof end !== "number") {
|
|
340
|
+
throw new TypeError("Indices must be numbers");
|
|
341
|
+
}
|
|
342
|
+
if (!Number.isInteger(begin) || !Number.isInteger(end)) {
|
|
343
|
+
throw new TypeError("Indices must be integers");
|
|
344
|
+
}
|
|
345
|
+
const len = this._length;
|
|
346
|
+
let startIdx = begin;
|
|
347
|
+
let endIdx = end;
|
|
348
|
+
if (startIdx < 0) {
|
|
349
|
+
startIdx = Math.max(len + startIdx, 0);
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
startIdx = Math.min(startIdx, len);
|
|
353
|
+
}
|
|
354
|
+
if (endIdx < 0) {
|
|
355
|
+
endIdx = Math.max(len + endIdx, 0);
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
endIdx = Math.min(endIdx, len);
|
|
359
|
+
}
|
|
360
|
+
const origStart = this._start;
|
|
361
|
+
const step = this._step;
|
|
362
|
+
if (startIdx >= endIdx) {
|
|
363
|
+
// Return an empty range
|
|
364
|
+
const emptyStart = origStart + startIdx * step;
|
|
365
|
+
const result = new PyRange(emptyStart, emptyStart, step);
|
|
366
|
+
return result;
|
|
367
|
+
}
|
|
368
|
+
const newStart = origStart + startIdx * step;
|
|
369
|
+
const newStop = origStart + endIdx * step;
|
|
370
|
+
// Create a new PyRange instance with the calculated bounds
|
|
371
|
+
const result = new PyRange(newStart, newStop, step);
|
|
372
|
+
return result;
|
|
373
|
+
}
|
|
326
374
|
/**
|
|
327
375
|
* Reverses the order of the elements in this range, returning a new PyRange object.
|
|
328
376
|
* @returns {PyRange} A new PyRange object with the elements in reverse order.
|
|
@@ -333,6 +381,41 @@ class PyRange {
|
|
|
333
381
|
result._length = this._length;
|
|
334
382
|
return result;
|
|
335
383
|
}
|
|
384
|
+
/**
|
|
385
|
+
* Returns an iterator of `[index, value]` pairs for each element in the range.
|
|
386
|
+
*
|
|
387
|
+
* This method behaves like `Array.prototype.entries()` and is useful for
|
|
388
|
+
* iterating over both the index and value of each item.
|
|
389
|
+
*
|
|
390
|
+
* @returns {IterableIterator<[number, number]>} Iterator of index/value pairs.
|
|
391
|
+
*/
|
|
392
|
+
*entries() {
|
|
393
|
+
for (let i = 0; i < this._length; i++) {
|
|
394
|
+
yield [i, this.at(i)];
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Returns an iterator of the indices for each element in the range.
|
|
399
|
+
*
|
|
400
|
+
* Works the same as `Array.prototype.keys()`.
|
|
401
|
+
*
|
|
402
|
+
* @returns {IterableIterator<number>} Iterator of indices.
|
|
403
|
+
*/
|
|
404
|
+
*keys() {
|
|
405
|
+
for (let i = 0; i < this._length; i++) {
|
|
406
|
+
yield i;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Returns an iterator of the values in the range.
|
|
411
|
+
*
|
|
412
|
+
* Equivalent to `Array.prototype.values()`.
|
|
413
|
+
*
|
|
414
|
+
* @returns {IterableIterator<number>} Iterator of values.
|
|
415
|
+
*/
|
|
416
|
+
*values() {
|
|
417
|
+
yield* this;
|
|
418
|
+
}
|
|
336
419
|
/**
|
|
337
420
|
* Implements the iterable protocol for this range.
|
|
338
421
|
* @returns {Iterator<number>} An iterator for this range.
|
|
@@ -71,3 +71,20 @@ range.forEach((x) => {
|
|
|
71
71
|
const popped = range.pop();
|
|
72
72
|
console.log("pop():", popped); // 9
|
|
73
73
|
console.log("After pop:", [...range]); // [1, 2, 3, 4, 5, 6, 7, 8]
|
|
74
|
+
|
|
75
|
+
// Slice: Get a subset of the range (returns new instance)
|
|
76
|
+
const sliced = range.slice(2, 5);
|
|
77
|
+
console.log("slice(2, 5):", [...sliced]); // [3, 4, 5]
|
|
78
|
+
console.log("Original after slice:", [...range]); // [1, 2, 3, 4, 5, 6, 7, 8] (unchanged)
|
|
79
|
+
|
|
80
|
+
// Entries: Iterate over index/value pairs
|
|
81
|
+
console.log("\nentries() example:");
|
|
82
|
+
for (const [i, v] of range.entries()) {
|
|
83
|
+
if (i < 3) {
|
|
84
|
+
console.log(i, v);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Keys and values helpers
|
|
89
|
+
console.log("keys():", [...range.keys()].slice(0, 3)); // [0,1,2]
|
|
90
|
+
console.log("values():", [...range.values()].slice(0, 3)); // [1,2,3]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "range-pie",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "A TypeScript class that simulates Python's range function, combined with several useful JavaScript array methods.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -13,8 +13,12 @@
|
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"dist",
|
|
17
|
-
"
|
|
16
|
+
"dist/**/*.js",
|
|
17
|
+
"dist/**/*.d.ts",
|
|
18
|
+
"!dist/**/*.map",
|
|
19
|
+
"examples/*.js",
|
|
20
|
+
"examples/*.ts",
|
|
21
|
+
"!examples/methods"
|
|
18
22
|
],
|
|
19
23
|
"scripts": {
|
|
20
24
|
"build": "tsc",
|
|
@@ -31,7 +35,9 @@
|
|
|
31
35
|
"example:basic": "node examples/basic-usage.js",
|
|
32
36
|
"example:array": "node examples/array-methods.js",
|
|
33
37
|
"example:advanced": "node examples/advanced-usage.js",
|
|
34
|
-
"example:ts": "ts-node examples/typescript-usage.ts"
|
|
38
|
+
"example:ts": "ts-node examples/typescript-usage.ts",
|
|
39
|
+
"example:methods": "for file in examples/methods/*.ts; do echo \"\\n=== Running $file ===\"; ts-node \"$file\"; done",
|
|
40
|
+
"knip": "knip"
|
|
35
41
|
},
|
|
36
42
|
"keywords": [
|
|
37
43
|
"range",
|
|
@@ -53,14 +59,16 @@
|
|
|
53
59
|
"devDependencies": {
|
|
54
60
|
"@eslint/js": "^9.28.0",
|
|
55
61
|
"@types/jest": "^29.5.0",
|
|
62
|
+
"@types/node": "^24.0.3",
|
|
56
63
|
"eslint": "^9.28.0",
|
|
57
64
|
"globals": "^16.2.0",
|
|
58
65
|
"jest": "^29.7.0",
|
|
66
|
+
"knip": "^5.61.2",
|
|
59
67
|
"prettier": "^3.5.3",
|
|
60
68
|
"rimraf": "^5.0.0",
|
|
61
69
|
"ts-jest": "^29.1.0",
|
|
62
70
|
"ts-node": "^10.9.1",
|
|
63
|
-
"typescript": "^5.
|
|
71
|
+
"typescript": "^5.8.3",
|
|
64
72
|
"typescript-eslint": "^8.33.1"
|
|
65
73
|
}
|
|
66
74
|
}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA8D;AAKrC,wFALI,kBAAY,OAKT;AAChC,kBAAe,kBAAO,CAAC;AAEvB,qDAAqD;AACrD,4DAA4D;AAC5D,wDAAwD;AACxD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;IAC3E,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,yDAAyD;IACzD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,iDAAiD;IACjD,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,kBAAO,CAAC;AACnC,CAAC"}
|
package/dist/py-range.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"py-range.js","sourceRoot":"","sources":["../src/py-range.ts"],"names":[],"mappings":"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"}
|