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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mol_regexp",
3
- "version": "0.0.1019",
3
+ "version": "0.0.1020",
4
4
  "exports": {
5
5
  "node": {
6
6
  "import": "./node.mjs",
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
- return new Proxy(new $mol_range2_array(), {
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 target[field];
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 = new $mol_range2_array();
496
- for (let index = 0; index < this.length; ++index) {
497
- const item = this[index];
498
- if (check.call(context, item, index, this))
499
- filtered.push(item);
500
- }
501
- return filtered;
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
- $mol_assert_ok(list instanceof Array);
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
- $mol_assert_ok(list instanceof Array);
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), () => 10).filter(v => v % 2).slice(0, 3);
623
- $mol_assert_ok(list instanceof Array);
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, 10);
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
- $mol_assert_ok(list instanceof Array);
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
- $mol_assert_ok(target instanceof Array);
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
- $mol_assert_ok(list instanceof Array);
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
- $mol_assert_ok($mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
683
+ $mol_assert_equal(true, $mol_range2(index => (++calls, index), () => 5).some(v => v >= 2));
676
684
  $mol_assert_equal(calls, 3);
677
- $mol_assert_not($mol_range2(i => i, () => 0).some(v => true));
678
- $mol_assert_ok($mol_range2(i => i).some(v => v > 5));
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
- $mol_assert_not($mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
690
+ $mol_assert_equal(false, $mol_range2(index => (++calls, index), () => 5).every(v => v < 2));
683
691
  $mol_assert_equal(calls, 3);
684
- $mol_assert_ok($mol_range2(i => i, () => 0).every(v => false));
685
- $mol_assert_not($mol_range2(i => i).every(v => v < 5));
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 = new $mol_range2_array(...[0, 1, 2, 3, 4, 5]).map(i => (++calls, i + 10)).slice(2);
690
- $mol_assert_ok(list instanceof Array);
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);