mol_regexp 0.0.1019 → 0.0.1020
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/node.test.js +41 -33
- package/node.test.js.map +1 -1
- package/package.json +1 -1
- package/web.test.js +41 -33
- package/web.test.js.map +1 -1
package/package.json
CHANGED
package/web.test.js
CHANGED
|
@@ -438,7 +438,12 @@ var $;
|
|
|
438
438
|
var $;
|
|
439
439
|
(function ($) {
|
|
440
440
|
function $mol_range2(item = index => index, size = () => Number.POSITIVE_INFINITY) {
|
|
441
|
-
|
|
441
|
+
const source = typeof item === 'function' ? new $mol_range2_array() : item;
|
|
442
|
+
if (typeof item !== 'function') {
|
|
443
|
+
item = index => source[index];
|
|
444
|
+
size = () => source.length;
|
|
445
|
+
}
|
|
446
|
+
return new Proxy(source, {
|
|
442
447
|
get(target, field) {
|
|
443
448
|
if (typeof field === 'string') {
|
|
444
449
|
if (field === 'length')
|
|
@@ -451,7 +456,7 @@ var $;
|
|
|
451
456
|
if (index === Math.trunc(index))
|
|
452
457
|
return item(index);
|
|
453
458
|
}
|
|
454
|
-
return
|
|
459
|
+
return $mol_range2_array.prototype[field];
|
|
455
460
|
},
|
|
456
461
|
set(target, field) {
|
|
457
462
|
return $mol_fail(new TypeError(`Lazy range is read only (trying to set field ${JSON.stringify(field)})`));
|
|
@@ -492,13 +497,16 @@ var $;
|
|
|
492
497
|
return $mol_range2(index => index < this.length ? this[index] : tail[0][index - this.length], () => this.length + tail[0].length);
|
|
493
498
|
}
|
|
494
499
|
filter(check, context) {
|
|
495
|
-
const filtered =
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
500
|
+
const filtered = [];
|
|
501
|
+
let cursor = -1;
|
|
502
|
+
return $mol_range2(index => {
|
|
503
|
+
while (cursor < this.length && index >= filtered.length - 1) {
|
|
504
|
+
const val = this[++cursor];
|
|
505
|
+
if (check(val, cursor, this))
|
|
506
|
+
filtered.push(val);
|
|
507
|
+
}
|
|
508
|
+
return filtered[index];
|
|
509
|
+
}, () => cursor < this.length ? Number.POSITIVE_INFINITY : filtered.length);
|
|
502
510
|
}
|
|
503
511
|
forEach(proceed, context) {
|
|
504
512
|
for (let [key, value] of this.entries())
|
|
@@ -558,7 +566,7 @@ var $;
|
|
|
558
566
|
'lazy calls'() {
|
|
559
567
|
let calls = 0;
|
|
560
568
|
const list = $mol_range2(index => (++calls, index), () => 10);
|
|
561
|
-
$
|
|
569
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
562
570
|
$mol_assert_equal(list.length, 10);
|
|
563
571
|
$mol_assert_equal(list[-1], undefined);
|
|
564
572
|
$mol_assert_equal(list[0], 0);
|
|
@@ -601,11 +609,17 @@ var $;
|
|
|
601
609
|
$mol_range2(i => i, () => 5).forEach(i => log += i);
|
|
602
610
|
$mol_assert_equal(log, '01234');
|
|
603
611
|
},
|
|
612
|
+
'reduce'() {
|
|
613
|
+
let calls = 0;
|
|
614
|
+
const list = $mol_range2().slice(1, 6);
|
|
615
|
+
$mol_assert_equal(list.reduce((s, v) => s + v), 15);
|
|
616
|
+
$mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
|
|
617
|
+
},
|
|
604
618
|
'lazy concat'() {
|
|
605
619
|
let calls1 = 0;
|
|
606
620
|
let calls2 = 0;
|
|
607
621
|
const list = $mol_range2(index => (++calls1, index), () => 5).concat([0, 1, 2, 3, 4], $mol_range2(index => (++calls2, index), () => 5));
|
|
608
|
-
$
|
|
622
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
609
623
|
$mol_assert_equal(list.length, 15);
|
|
610
624
|
$mol_assert_equal(list[0], 0);
|
|
611
625
|
$mol_assert_equal(list[4], 4);
|
|
@@ -617,32 +631,26 @@ var $;
|
|
|
617
631
|
$mol_assert_equal(calls1, 2);
|
|
618
632
|
$mol_assert_equal(calls2, 2);
|
|
619
633
|
},
|
|
620
|
-
'filter'() {
|
|
634
|
+
'lazy filter'() {
|
|
621
635
|
let calls = 0;
|
|
622
|
-
const list = $mol_range2(index => (++calls, index), () =>
|
|
623
|
-
$
|
|
636
|
+
const list = $mol_range2(index => (++calls, index), () => 15).filter(v => v % 2).slice(0, 3);
|
|
637
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
624
638
|
$mol_assert_equal(list.length, 3);
|
|
625
639
|
$mol_assert_equal(list[0], 1);
|
|
626
640
|
$mol_assert_equal(list[2], 5);
|
|
627
641
|
$mol_assert_equal(list[3], undefined);
|
|
628
|
-
$mol_assert_equal(calls,
|
|
642
|
+
$mol_assert_equal(calls, 8);
|
|
629
643
|
},
|
|
630
|
-
'reverse'() {
|
|
644
|
+
'lazy reverse'() {
|
|
631
645
|
let calls = 0;
|
|
632
646
|
const list = $mol_range2(index => (++calls, index), () => 10).toReversed().slice(0, 3);
|
|
633
|
-
$
|
|
647
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
634
648
|
$mol_assert_equal(list.length, 3);
|
|
635
649
|
$mol_assert_equal(list[0], 9);
|
|
636
650
|
$mol_assert_equal(list[2], 7);
|
|
637
651
|
$mol_assert_equal(list[3], undefined);
|
|
638
652
|
$mol_assert_equal(calls, 2);
|
|
639
653
|
},
|
|
640
|
-
'reduce'() {
|
|
641
|
-
let calls = 0;
|
|
642
|
-
const list = $mol_range2().slice(1, 6);
|
|
643
|
-
$mol_assert_equal(list.reduce((s, v) => s + v), 15);
|
|
644
|
-
$mol_assert_equal(list.reduce((s, v) => s + v, 5), 20);
|
|
645
|
-
},
|
|
646
654
|
'lazy map'() {
|
|
647
655
|
let calls1 = 0;
|
|
648
656
|
let calls2 = 0;
|
|
@@ -652,7 +660,7 @@ var $;
|
|
|
652
660
|
$mol_assert_equal(source, self);
|
|
653
661
|
return index + 10;
|
|
654
662
|
}, () => 5);
|
|
655
|
-
$
|
|
663
|
+
$mol_assert_equal(true, target instanceof Array);
|
|
656
664
|
$mol_assert_equal(target.length, 5);
|
|
657
665
|
$mol_assert_equal(target[0], 10);
|
|
658
666
|
$mol_assert_equal(target[4], 14);
|
|
@@ -663,7 +671,7 @@ var $;
|
|
|
663
671
|
'lazy slice'() {
|
|
664
672
|
let calls = 0;
|
|
665
673
|
const list = $mol_range2(index => (++calls, index), () => 10).slice(3, 7);
|
|
666
|
-
$
|
|
674
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
667
675
|
$mol_assert_equal(list.length, 4);
|
|
668
676
|
$mol_assert_equal(list[0], 3);
|
|
669
677
|
$mol_assert_equal(list[3], 6);
|
|
@@ -672,22 +680,22 @@ var $;
|
|
|
672
680
|
},
|
|
673
681
|
'lazy some'() {
|
|
674
682
|
let calls = 0;
|
|
675
|
-
$
|
|
683
|
+
$mol_assert_equal(true, $mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
|
|
676
684
|
$mol_assert_equal(calls, 3);
|
|
677
|
-
$
|
|
678
|
-
$
|
|
685
|
+
$mol_assert_equal(false, $mol_range2(i => i, () => 0).some(v => true));
|
|
686
|
+
$mol_assert_equal(true, $mol_range2(i => i).some(v => v > 5));
|
|
679
687
|
},
|
|
680
688
|
'lazy every'() {
|
|
681
689
|
let calls = 0;
|
|
682
|
-
$
|
|
690
|
+
$mol_assert_equal(false, $mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
|
|
683
691
|
$mol_assert_equal(calls, 3);
|
|
684
|
-
$
|
|
685
|
-
$
|
|
692
|
+
$mol_assert_equal(true, $mol_range2(i => i, () => 0).every(v => false));
|
|
693
|
+
$mol_assert_equal(false, $mol_range2(i => i).every(v => v < 5));
|
|
686
694
|
},
|
|
687
695
|
'lazyfy'() {
|
|
688
696
|
let calls = 0;
|
|
689
|
-
const list =
|
|
690
|
-
$
|
|
697
|
+
const list = $mol_range2([0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
|
|
698
|
+
$mol_assert_equal(true, list instanceof Array);
|
|
691
699
|
$mol_assert_equal(list.length, 4);
|
|
692
700
|
$mol_assert_equal(calls, 0);
|
|
693
701
|
$mol_assert_equal(list[0], 12);
|