Skip to content

Commit 36a16f7

Browse files
committed
Refactor to ignore iterator return values
1 parent 15ac681 commit 36a16f7

File tree

2 files changed

+13
-84
lines changed

2 files changed

+13
-84
lines changed

lib/node_modules/@stdlib/iter/slice/lib/main.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-propert
2424
var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;
2525
var isFunction = require( '@stdlib/assert/is-function' );
2626
var isIteratorLike = require( '@stdlib/assert/is-iterator-like' );
27-
var hasOwnProp = require( '@stdlib/assert/has-own-property' );
2827
var iteratorSymbol = require( '@stdlib/symbol/iterator' );
2928

3029

@@ -111,36 +110,35 @@ function iterSlice( iterator, begin, end ) {
111110
* @returns {Object} iterator protocol-compliant object
112111
*/
113112
function next() {
114-
var out;
115113
var v;
116-
114+
if ( FLG ) {
115+
return {
116+
'done': true
117+
};
118+
}
117119
i += 1;
118120
if ( n > 0 && i < N ) {
119121
// Lazily consume the first `N` values from the provided iterator...
120122
for ( i = 0; i < N; i++ ) {
121-
FLG = iterator.next().done;
123+
v = iterator.next();
122124
}
123125
}
126+
if ( v && v.done ) {
127+
FLG = true;
128+
return v;
129+
}
124130
n -= 1;
125-
if ( FLG || n < 0 ) {
131+
if ( n < 0 ) {
132+
FLG = true;
126133
return {
127134
'done': true
128135
};
129136
}
130137
v = iterator.next();
131138
if ( v.done ) {
132139
FLG = true;
133-
out = {};
134-
if ( hasOwnProp( v, 'value' ) ) {
135-
out.value = v.value;
136-
}
137-
out.done = true;
138-
return out;
139140
}
140-
return {
141-
'value': v.value,
142-
'done': false
143-
};
141+
return v;
144142
}
145143

146144
/**

lib/node_modules/@stdlib/iter/slice/test/test.js

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -29,37 +29,6 @@ var iteratorSymbol = require( '@stdlib/symbol/iterator' );
2929
var iterSlice = require( './../lib' );
3030

3131

32-
// FUNCTIONS //
33-
34-
function createIterator( arr ) {
35-
var len;
36-
var it;
37-
var i;
38-
39-
len = arr.length;
40-
i = -1;
41-
42-
it = {};
43-
it.next = next;
44-
45-
return it;
46-
47-
function next() {
48-
var out;
49-
i += 1;
50-
if ( i < len ) {
51-
out = {};
52-
out.value = arr[ i ];
53-
out.done = ( i === len-1 );
54-
return out;
55-
}
56-
return {
57-
'done': true
58-
};
59-
}
60-
}
61-
62-
6332
// TESTS //
6433

6534
tape( 'main export is a function', function test( t ) {
@@ -505,44 +474,6 @@ tape( 'the function returns an "empty" iterator if the third argument is less th
505474
t.end();
506475
});
507476

508-
tape( 'the function returns an iterator protocol-compliant object (value+done)', function test( t ) {
509-
var expected;
510-
var values;
511-
var actual;
512-
var it;
513-
var i;
514-
515-
values = [ 0, 0, 0, 1, 2, 3, 4 ];
516-
expected = [
517-
{
518-
'value': 1,
519-
'done': false
520-
},
521-
{
522-
'value': 2,
523-
'done': false
524-
},
525-
{
526-
'value': 3,
527-
'done': false
528-
},
529-
{
530-
'value': 4,
531-
'done': true
532-
}
533-
];
534-
535-
it = iterSlice( createIterator( values ), 3, values.length );
536-
t.equal( it.next.length, 0, 'has zero arity' );
537-
538-
actual = [];
539-
for ( i = 0; i < expected.length; i++ ) {
540-
actual.push( it.next() );
541-
}
542-
t.deepEqual( actual, expected, 'returns expected values' );
543-
t.end();
544-
});
545-
546477
tape( 'the returned iterator has a `return` method for closing an iterator (no argument)', function test( t ) {
547478
var it;
548479
var r;

0 commit comments

Comments
 (0)