kmhjs / CocoaFn

Collection extensions for Objective-C. (ARC environment)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CocoaFn

Collection extensions for Objective-C. (ARC environment)

Current progress

  • NSArray
  • NSDictionary
  • NSSet

Common tasks

This extension provides following tasks for supported collection classes.

  • each
  • map
  • reduce
  • select
  • reject

Requirements

  • Ruby
    • For 'CocoaPods'
  • Bundler
    • RubyGems

Dependencies

  • Test
    • Expecta (~> 1.0)

How to try

Use in project with Cocoapods

Add following one line to your Podfile .

pod 'CocoaFn', :git => 'https://github.com/kmhjs/CocoaFn.git', :branch => 'develop'

Run project for test / development

  1. bundle install --path=./bundle/install
  2. bundle exec pod install

After these steps, you can try with CocoaFn.xcworkspace .

Example

Each

[self.stringTestSet each:^(NSString *element) {
  [result addObject:element];
}];
self.stringTestSet.each(^(NSString *element) {
  [result addObject:element];
});

Map

[self.stringTestSet map:^id(id element) {
  return [NSString stringWithFormat:@"element = %@", (NSString *)element];
}];
self.stringTestSet.map(^id(id element) {
  return [NSString stringWithFormat:@"element = %@", (NSString *)element];
});

Reduce

[self.numberTestSet reduce:@(0) fn:^id(NSNumber *accumlator, NSNumber *element) {
  return @([accumlator floatValue] + [element floatValue]);
}];
self.numberTestSet.reduce(@(0), ^id(NSNumber * accumlator, id element) {
  return @([accumlator floatValue] + [element floatValue]);
});

Select

[self.numberTestSet select:^BOOL(NSNumber *element) {
  return [element floatValue] > 3;
}];
self.numberTestSet.select(^BOOL(NSNumber *element) {
  return [element floatValue] > 3;
});

Reject

[self.numberTestSet reject:^BOOL(NSNumber *element) {
  return [element floatValue] <= 3;
}];
self.numberTestSet.reject(^BOOL(NSNumber *element) {
  return [element floatValue] <= 3;
});

Combination

[[self.numberTestSet map:^id _Nonnull(NSNumber * _Nonnull element) {
  return @([element floatValue] * 10);

}] select:^BOOL(id  _Nonnull element) {
  return [element floatValue] > 30;

}];
self.numberTestSet.map(^id _Nonnull(NSNumber * _Nonnull element) {
  return @([element floatValue] * 10);

}).select(^BOOL(id  _Nonnull element) {
  return [element floatValue] > 30;

});

License

See LICENSE .

About

Collection extensions for Objective-C. (ARC environment)

License:MIT License


Languages

Language:Objective-C 92.3%Language:Ruby 7.7%