This PR contains all the work related to setting up this project as required to implement the [Assignment](https://repo.rock-n-code.com/rock-n-code/deep-linking-assignment/wiki/Assignment) on top, as intended. To summarise this work: - [x] created a new **Xcode** project; - [x] cloned the `Wikipedia` app and inserted it into the **Xcode** project; - [x] created the `Locations` app and also, its `Libraries` package; - [x] created the `Shared` package to share dependencies between the apps; - [x] added a `Makefile` file and implemented some **environment** and **help** commands. Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Reviewed-on: rock-n-code/deep-linking-assignment#1
42 lines
1.1 KiB
Objective-C
42 lines
1.1 KiB
Objective-C
#import <WMF/NSArray+WMFMapping.h>
|
|
#import <WMF/WMF-Swift.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@implementation NSArray (WMFMapping)
|
|
|
|
- (NSArray *)wmf_strictMap:(id (^)(id obj))block {
|
|
NSParameterAssert(block != nil);
|
|
|
|
NSMutableArray *result = [NSMutableArray arrayWithCapacity:self.count];
|
|
|
|
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
|
|
id value = block(obj);
|
|
NSParameterAssert(value != nil);
|
|
if (!value) {
|
|
value = [NSNull null];
|
|
}
|
|
[result addObject:value];
|
|
}];
|
|
|
|
return result;
|
|
}
|
|
|
|
- (NSArray *)wmf_mapAndRejectNil:(id _Nullable (^_Nonnull)(id _Nonnull obj))flatMap {
|
|
if (!flatMap) {
|
|
return self;
|
|
}
|
|
return [self wmf_reduce:[[NSMutableArray alloc] initWithCapacity:self.count]
|
|
withBlock:^id(NSMutableArray *sum, id obj) {
|
|
id result = flatMap(obj);
|
|
if (result) {
|
|
[sum addObject:result];
|
|
}
|
|
return sum;
|
|
}];
|
|
}
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|