Skip to content

Commit c45f17a

Browse files
committed
generalize reverse
1 parent df6a36a commit c45f17a

File tree

3 files changed

+52
-65
lines changed

3 files changed

+52
-65
lines changed

dist/Immutable.js

+17-24
Original file line numberDiff line numberDiff line change
@@ -301,16 +301,7 @@ var $Sequence = Sequence;
301301
return this.map(mapper, thisArg).flatten();
302302
},
303303
reverse: function() {
304-
var sequence = this;
305-
var reversedSequence = sequence.__makeSequence();
306-
reversedSequence.reverse = (function() {
307-
return sequence;
308-
});
309-
reversedSequence.length = sequence.length;
310-
reversedSequence.__iterateUncached = (function(fn, reverse) {
311-
return sequence.__iterate(fn, !reverse);
312-
});
313-
return reversedSequence;
304+
return reverseFactory(this, true);
314305
},
315306
keySeq: function() {
316307
return this.flip().valueSeq();
@@ -657,20 +648,7 @@ var $IndexedSequence = IndexedSequence;
657648
return concatFactory(this, values, false);
658649
},
659650
reverse: function() {
660-
var sequence = this;
661-
var reversedSequence = sequence.__makeSequence();
662-
reversedSequence.reverse = (function() {
663-
return sequence;
664-
});
665-
reversedSequence.length = sequence.length;
666-
reversedSequence.__iterateUncached = function(fn, reverse, reverseIndices) {
667-
var $__0 = this;
668-
var i = reverseIndices ? this.length : 0;
669-
return sequence.__iterate((function(v) {
670-
return fn(v, reverseIndices ? --i : i++, $__0) !== false;
671-
}), !reverse);
672-
};
673-
return reversedSequence;
651+
return reverseFactory(this, false);
674652
},
675653
filter: function(predicate, thisArg) {
676654
return filterFactory(this, predicate, thisArg, false);
@@ -884,6 +862,21 @@ function returnTrue() {
884862
function returnThis() {
885863
return this;
886864
}
865+
function reverseFactory(sequence, useKeys) {
866+
var reversedSequence = sequence.__makeSequence();
867+
reversedSequence.reverse = (function() {
868+
return sequence;
869+
});
870+
reversedSequence.length = sequence.length;
871+
reversedSequence.__iterateUncached = function(fn, reverse, reverseIndices) {
872+
var $__0 = this;
873+
var i = reverseIndices ? this.length : 0;
874+
return sequence.__iterate((function(v, k) {
875+
return fn(v, useKeys ? k : reverseIndices ? --i : i++, $__0);
876+
}), !reverse);
877+
};
878+
return reversedSequence;
879+
}
887880
function filterFactory(sequence, predicate, context, useKeys) {
888881
var filterSequence = sequence.__makeSequence();
889882
filterSequence.__iterateUncached = function(fn, reverse, reverseIndices) {

0 commit comments

Comments
 (0)