From 32a93baddcd02fa4cf9bebcb638b1924d71566e3 Mon Sep 17 00:00:00 2001 From: isaacroldan Date: Fri, 20 Feb 2015 14:15:59 +0100 Subject: [PATCH 1/3] added method to do ZIP, general method --- Underscore/USArrayWrapper.h | 1 + Underscore/USArrayWrapper.m | 13 +++++++++++++ Underscore/Underscore+Functional.h | 2 +- Underscore/Underscore+Functional.m | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Underscore/USArrayWrapper.h b/Underscore/USArrayWrapper.h index 0ff0b18..03a463a 100644 --- a/Underscore/USArrayWrapper.h +++ b/Underscore/USArrayWrapper.h @@ -58,6 +58,7 @@ @property (readonly) USArrayWrapper *(^each)(UnderscoreArrayIteratorBlock block); @property (readonly) USArrayWrapper *(^map)(UnderscoreArrayMapBlock block); @property (readonly) USArrayWrapper *(^zipWith)(NSArray *array, UnderscoreArrayZipWithBlock block); +@property (readonly) USArrayWrapper *zip; @property (readonly) USArrayWrapper *(^pluck)(NSString *keyPath); diff --git a/Underscore/USArrayWrapper.m b/Underscore/USArrayWrapper.m index bed29c0..50c0e31 100644 --- a/Underscore/USArrayWrapper.m +++ b/Underscore/USArrayWrapper.m @@ -243,6 +243,19 @@ - (USArrayWrapper *)shuffle }; } +- (USArrayWrapper *)zip +{ + int lenght = [self.first count]; + NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:lenght*self.array.count]; + for (NSUInteger index = 0; index < lenght; index++) { + USArrayWrapper *wrapper = self.map(^id (id obj) { + return [obj objectAtIndex:index]; + }); + [finalMutableArray addObject:wrapper.unwrap]; + } + return [[USArrayWrapper alloc] initWithArray:finalMutableArray]; +} + - (USArrayWrapper *(^)(NSString *))pluck { return ^USArrayWrapper *(NSString *keyPath) { diff --git a/Underscore/Underscore+Functional.h b/Underscore/Underscore+Functional.h index be33343..1696f92 100644 --- a/Underscore/Underscore+Functional.h +++ b/Underscore/Underscore+Functional.h @@ -52,7 +52,7 @@ + (void (^)(NSArray *array, UnderscoreArrayIteratorBlock block))arrayEach; + (NSArray *(^)(NSArray *array, UnderscoreArrayMapBlock block))arrayMap; + (NSArray *(^)(NSArray *firstArray, NSArray *secondArray, UnderscoreArrayZipWithBlock block))arrayZipWith; - ++ (NSArray *(^)(NSArray *))zip; + (NSArray *(^)(NSArray *array, NSString *keyPath))pluck; + (NSArray *(^)(NSArray *array))uniq; diff --git a/Underscore/Underscore+Functional.m b/Underscore/Underscore+Functional.m index 7e28542..1086ad9 100644 --- a/Underscore/Underscore+Functional.m +++ b/Underscore/Underscore+Functional.m @@ -142,6 +142,13 @@ @implementation Underscore (Functional) }; } ++ (NSArray *(^)(NSArray *))zip +{ + return ^(NSArray *array) { + return Underscore.array(array).zip.unwrap; + }; +} + + (NSArray *(^)(NSArray *, NSString *))pluck { return ^(NSArray *array, NSString *keyPath) { From 2cdfb1a80b300a5f88eca49d36133b6d6242d36f Mon Sep 17 00:00:00 2001 From: Isaac Date: Fri, 20 Feb 2015 18:43:48 +0100 Subject: [PATCH 2/3] Fixed typo and :art: --- Underscore/USArrayWrapper.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Underscore/USArrayWrapper.m b/Underscore/USArrayWrapper.m index 50c0e31..279af07 100644 --- a/Underscore/USArrayWrapper.m +++ b/Underscore/USArrayWrapper.m @@ -245,8 +245,8 @@ - (USArrayWrapper *)shuffle - (USArrayWrapper *)zip { - int lenght = [self.first count]; - NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:lenght*self.array.count]; + int length = [self.first count]; + NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:lenght * self.array.count]; for (NSUInteger index = 0; index < lenght; index++) { USArrayWrapper *wrapper = self.map(^id (id obj) { return [obj objectAtIndex:index]; From b9c7fd1a681f3767b9369c2a5c677291207cbae9 Mon Sep 17 00:00:00 2001 From: isaacroldan Date: Mon, 23 Feb 2015 11:57:11 +0100 Subject: [PATCH 3/3] fixed typo in ZIP --- Underscore/USArrayWrapper.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Underscore/USArrayWrapper.m b/Underscore/USArrayWrapper.m index 279af07..e2106f8 100644 --- a/Underscore/USArrayWrapper.m +++ b/Underscore/USArrayWrapper.m @@ -245,9 +245,9 @@ - (USArrayWrapper *)shuffle - (USArrayWrapper *)zip { - int length = [self.first count]; - NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:lenght * self.array.count]; - for (NSUInteger index = 0; index < lenght; index++) { + int length = (int)[self.first count]; + NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:length * self.array.count]; + for (NSUInteger index = 0; index < length; index++) { USArrayWrapper *wrapper = self.map(^id (id obj) { return [obj objectAtIndex:index]; });