@@ -292,29 +292,13 @@ var $Sequence = Sequence;
292
292
for ( var values = [ ] ,
293
293
$__2 = 0 ; $__2 < arguments . length ; $__2 ++ )
294
294
values [ $__2 ] = arguments [ $__2 ] ;
295
- var sequences = [ this ] . concat ( values . map ( ( function ( value ) {
296
- return $Sequence ( value ) ;
297
- } ) ) ) ;
298
- var concatSequence = this . __makeSequence ( ) ;
299
- concatSequence . length = sequences . reduce ( ( function ( sum , seq ) {
300
- return sum != null && seq . length != null ? sum + seq . length : undefined ;
301
- } ) , 0 ) ;
302
- concatSequence . __iterateUncached = ( function ( fn , reverse ) {
303
- var iterations = 0 ;
304
- var stoppedIteration ;
305
- var lastIndex = sequences . length - 1 ;
306
- for ( var ii = 0 ; ii <= lastIndex && ! stoppedIteration ; ii ++ ) {
307
- var seq = sequences [ reverse ? lastIndex - ii : ii ] ;
308
- iterations += seq . __iterate ( ( function ( v , k , c ) {
309
- if ( fn ( v , k , c ) === false ) {
310
- stoppedIteration = true ;
311
- return false ;
312
- }
313
- } ) , reverse ) ;
314
- }
315
- return iterations ;
316
- } ) ;
317
- return concatSequence ;
295
+ return concatFactory ( this , values , true ) ;
296
+ } ,
297
+ flatten : function ( ) {
298
+ return flattenFactory ( this , true ) ;
299
+ } ,
300
+ flatMap : function ( mapper , thisArg ) {
301
+ return this . map ( mapper , thisArg ) . flatten ( ) ;
318
302
} ,
319
303
reverse : function ( ) {
320
304
var sequence = this ;
@@ -670,17 +654,7 @@ var $IndexedSequence = IndexedSequence;
670
654
for ( var values = [ ] ,
671
655
$__3 = 0 ; $__3 < arguments . length ; $__3 ++ )
672
656
values [ $__3 ] = arguments [ $__3 ] ;
673
- var sequences = [ this ] . concat ( values ) ;
674
- var concatSequence = Sequence ( sequences ) . flatten ( ) ;
675
- concatSequence . length = sequences . reduce ( ( function ( sum , seq ) {
676
- if ( sum !== undefined ) {
677
- var len = Sequence ( seq ) . length ;
678
- if ( len != null ) {
679
- return sum + len ;
680
- }
681
- }
682
- } ) , 0 ) ;
683
- return concatSequence ;
657
+ return concatFactory ( this , values , false ) ;
684
658
} ,
685
659
reverse : function ( ) {
686
660
var sequence = this ;
@@ -739,28 +713,7 @@ var $IndexedSequence = IndexedSequence;
739
713
return numArgs === 1 ? spliced : spliced . concat ( arrCopy ( arguments , 2 ) , this . slice ( index + removeNum ) ) ;
740
714
} ,
741
715
flatten : function ( ) {
742
- var sequence = this ;
743
- var flatSequence = this . __makeSequence ( ) ;
744
- flatSequence . __iterateUncached = function ( fn , reverse , reverseIndices ) {
745
- var $__0 = this ;
746
- var iterations = 0 ;
747
- var maxIndex = this . length - 1 ;
748
- sequence . __iterate ( ( function ( seq ) {
749
- var stopped = false ;
750
- Sequence ( seq ) . __iterate ( ( function ( v ) {
751
- if ( fn ( v , reverseIndices ? maxIndex - iterations ++ : iterations ++ , $__0 ) === false ) {
752
- stopped = true ;
753
- return false ;
754
- }
755
- } ) , reverse ) ;
756
- return ! stopped ;
757
- } ) , reverse ) ;
758
- return iterations ;
759
- } ;
760
- return flatSequence ;
761
- } ,
762
- flatMap : function ( mapper , thisArg ) {
763
- return this . map ( mapper , thisArg ) . flatten ( ) ;
716
+ return flattenFactory ( this , false ) ;
764
717
} ,
765
718
skip : function ( amount ) {
766
719
return skipFactory ( this , amount , false ) ;
@@ -1009,6 +962,44 @@ function skipWhileFactory(sequence, predicate, thisArg, useKeys) {
1009
962
} ;
1010
963
return skipSequence ;
1011
964
}
965
+ function concatFactory ( sequence , values , useKeys ) {
966
+ var sequences = [ sequence ] . concat ( values ) ;
967
+ var concatSequence = Sequence ( sequences ) ;
968
+ if ( useKeys ) {
969
+ concatSequence = concatSequence . toKeyedSeq ( ) ;
970
+ }
971
+ concatSequence = concatSequence . flatten ( ) ;
972
+ concatSequence . length = sequences . reduce ( ( function ( sum , seq ) {
973
+ if ( sum !== undefined ) {
974
+ var len = Sequence ( seq ) . length ;
975
+ if ( len != null ) {
976
+ return sum + len ;
977
+ }
978
+ }
979
+ } ) , 0 ) ;
980
+ return concatSequence ;
981
+ }
982
+ function flattenFactory ( sequence , useKeys ) {
983
+ var flatSequence = sequence . __makeSequence ( ) ;
984
+ flatSequence . __iterateUncached = function ( fn , reverse , reverseIndices ) {
985
+ var $__0 = this ;
986
+ var iterations = 0 ;
987
+ var len = this . length ;
988
+ sequence . __iterate ( ( function ( seq ) {
989
+ var stopped = false ;
990
+ Sequence ( seq ) . __iterate ( ( function ( v , k ) {
991
+ iterations ++ ;
992
+ if ( fn ( v , useKeys ? k : reverseIndices ? len - iterations : iterations - 1 , $__0 ) === false ) {
993
+ stopped = true ;
994
+ return false ;
995
+ }
996
+ } ) , reverse ) ;
997
+ return ! stopped ;
998
+ } ) , reverse ) ;
999
+ return iterations ;
1000
+ } ;
1001
+ return flatSequence ;
1002
+ }
1012
1003
function not ( predicate ) {
1013
1004
return function ( ) {
1014
1005
return ! predicate . apply ( this , arguments ) ;
0 commit comments