Skip to content
This repository was archived by the owner on Nov 11, 2021. It is now read-only.

yaakaito/Overline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

77d5db3 · Jul 14, 2014
Jun 11, 2014
Jun 11, 2014
Jun 11, 2014
Jun 16, 2014
Sep 8, 2013
Apr 18, 2013
Mar 27, 2014
Jan 8, 2013
Jun 3, 2014
Jun 3, 2014
Aug 1, 2013
Apr 18, 2013
Aug 16, 2013

Repository files navigation

Overline 0.2.0

Objective-C utilities and shorthands.

Overline is not clone of other language features. Simple and clean Objective-C.

Usage

setup with cocoapods.

pod 'Overline'

import Overline.h

#import "Overline.h"

with BlocksKit

pod 'BlocksKit'
pod 'Overline-BlocksKit'

Ignored duplicate methods: each map reduce filter reject

Features

NSArray

NSArray+Initialize

NSArray *array = [NSArray arrayWithRangeFrom:0 to:10];
// @[@0, @1, @2, @3, @4, @5, @6, @7, @8, @9]

NSArray *array2 = [NSArray arrayWithRangeFrom:0 to:-10 step:2];
// @[@0, @-2, @-4, @-6, @-8]
  • arrayWithRangeFrom:to:
  • arrayWithRangeFrom:to:step:

NSArray+Enumeration

NSArray *mapped = [@[@1,@2,@3,@4,@5,@6] mappedArrayUsingBlock:^id(id obj, NSUInteger idx) {
    if ([obj integerValue] % 2 == 0) {
        return obj;
    }
    return nil;
}];
// @[@2,@4,@6]
  • each
  • map mappedArrayUsingBlock
  • reduce reducedObjectByBlock
  • find objectUsingBlock
  • filter filteredArrayUsingBlock
  • reject rejectedArrayUsingBlock

NSArray+Random

NSArray *shuffled = [@[@1,@2,@3,@4,@5,@6] shuffledArray];
  • shuffle shuffledArray
  • anyObject

NSArray+Reverse

NSArray *reversed = [@[@1,@2,@3,@4,@5,@6] reversedArray]; 
// @[@6,@5,@4,@3,@2,@1]
  • reverse reversedArray
  • objectAtReversedIndex

NSArray+Selector

  • firstObject

NSArray+SubArray

  • subarrayFromIndex:
  • subarrayFromIndex:length:
  • subarrayToIndex:
  • uniqueObjects
  • uniqueObjectsUsingEqualsBlock

NSArray+Difference

  • difference arrayDifferenceWithArray
  • unionise arrayByUnionisingArray

NSArray+Shorthand

  • isEmpty

NSArray+Sorting

  • arraySortedDescending:
  • arraySortedAsc
  • arraySortedDesc

NSMutableArray

NSMutableArray+Shorthands

NSMutableArray *marray = [NSMutableArray arrayWithArray:@[@1,@2,@3]];
[marray insertObjects:@[@4,@5,@6] atIndex:1];
  • insertObjects:atIndex:

NSMutableArray+Sorting

  • sortDescending:
  • sortAsc
  • sortDesc

NSDate

NSDate+Components

Class Methods
  • currentWeekday
  • currentHour
  • currentMinute
  • currentSecond
  • currentDay
  • currentMonth
  • currentYear
  • commonDateComponentsForNow
  • timeComponentsForNow
Instance Methods
  • weekday
  • hour
  • minute
  • second
  • day
  • month
  • year
  • commonDateComponents
  • timeComponents

NSDictionary

NSDictionary+Selector

NSDate *date = [JSON objectForKey:@"date8601" transformBlock:^id(id obj) {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss Z"];
    return [formatter dateFromString:obj];
}];
  • objectForKey:transformBlock:
  • numberForKey:
  • stringForKey:
  • arrayForKey:
  • dictionaryForKey:
  • dateForKey:
  • dateForKey:usingFormat:
  • since1970DateForKey:
  • timestampForKey:
  • boolObjectForKey:withTrueValue:
  • boolForKey:withTureValue:
  • boolForKey:
  • intForKey:
  • integerForKey:
  • unsignedIntForKey:
  • unsignedIntegerForKey:
  • longForKey:
  • unsignedLongForKey:
  • longLongForKey:
  • unsignedLongLongForKey:
  • doubleForKey:
  • floatForKey:

NSDictionary+Enumeration

NSDictionary *dic = @{
        @"a" : @1,
        @"b" : @2,
        @"c" : @3,
        @"d" : @4
};

NSDictionary *filtered = [dic dictionaryFilteredByKeyUsingBlock:^BOOL(NSString *key) {
    return [key isEqualToString:@"a"];
}]; // @{@"a":@1}
  • each:
  • map mappedDictionaryUsingBlock
  • arrayMap mappedArrayUsingBlock
  • filterKey dictionaryFilteredByKeyUsingBlock
  • rejectKey dictionaryRejectedByKeyUsingBlock
  • filterObject dictionaryFilteredByObjectUsingBlock
  • rejectObject dictionaryRejectedByObjectUsingBlock
  • merge dictionaryByMergingDictionary
  • reduce: reducedObjectUsingBlock:memo:
  • queryString stringByFormattingQuery

NSDictionary+Path

/*
@{
    @"error" : @{
        @"message" : @"msg"
    }
}
*/
NSString *s = [dic objectForPath:@"error.message"];
  • objectForPath:

NSSet

NSSet+Enumeration

NSSet *set = [NSSet setWithArray:@[@1,@2,@3,@4,@5,@6]];
NSSet *mapped = [set mappedSetUsingBlock:^id(id obj, NSUInteger idx) {
    if ([obj integerValue] % 2 == 0) {
        return obj;
    }
    return nil;
}];
  • each
  • map mappedSetUsingBlock
  • reduce reducedObjectByBlock
  • filter filteredSetUsingBlock
  • reject rejectedSetUsingBlock

NSString

NSString+Components

[@"hoge=fuga&piyo=foo" componentsSeparatedByInnerString:@"=" andOuterString:@"&"];
/* 
@{
    @"hoge" : @"fuga",
    @"piyo" : @"foo"
};
*/
  • componentsSeparatedByInnerString:andOuterString:

NSString+RegularExpression

[@"https?" testInString:urlString];
  • rangeOfFirstMatchInString:
  • rangeOfFirstMatchInString:options:
  • matchesInString:
  • matchesInString:options:
  • testInString:
  • testInString:options:
  • replace:newString: stringByReplacingOccurrencesOfRegExpPattern:withString
  • replace:newString:options: stringByReplacingOccurrencesOfRegExpPattern:withString:options:
  • replace:template: stringByReplacingOccurrencesOfRegExpPattern:withTemplate:
  • replace:template:options: stringByReplacingOccurrencesOfRegExpPattern:withTemplate:options:

NSString+Hash

[@"hoge" md5]; // @"ea703e7aa1efda0064eaa507d9e8ab7e"
  • sha256
  • stringByHashingSha256
  • md5
  • stringByHashingMD5

NSString+URLEncode

  • URLEncode
  • stringByEncodingURL
  • URLDecode
  • stringByDecodingURL

NSString+Shorthand

  • trim
  • trim: - Trim character set in a given string

NSString+JSON

NSString *JSONString = @"{\"hoge\" : \"fuga\" }";
id json = [JSONString jsonObject];
  • JSON jsonObject

NSString+Base64Encode

[@"a" stringByEncodingBase64]; // @"YQ=="
[@"YQ==" stringByDecodingBase64]; // @"a"
  • encodeBase64 stringByEncodingBase64
  • decodeBase64 stringByDecodingBase64
  • dataUsingDecodingBase64

NSData

NSData+Base64Encode

  • base64Encode stringUsingEncodingBase64

NSURL

NSURL+Components

  • queryComponents

NSURL+Directories

NSURL *pdfURL = [NSURL URLForUserDirectoryWithAppendedPath:@"myDoc.pdf"];
NSURL *userImageFolderURL = [NSURL URLForUserDirectoryWithAppendedPath:@"images"];
  • URLForDirectory:domainMask:
  • URLForApplicationSupportDataDirectory
  • URLForApplicationSupportWithAppendedPath:
  • URLForUserDirectory
  • URLForUserDirectoryWithAppendedPath:
  • URLForDocumentDirectory;
  • URLForDocumentDirectoryWithAppendedPath:;

NSBundle

NSBundle+Shorthand

  • JSONForResourceName

NSNumber

NSNumber+Equals

[@1 isEqualToInteger:1];
  • isEqualToInt:
  • isEqualToInteger:
  • isEqualToUnsignedInt:
  • isEqualToUnsignedInteger:
  • isEqualToLong:
  • isEqualToLongLong:
  • isEqualToUnsignedLong:
  • isEqualToUnsignedLongLong:
  • isEqualToDouble:
  • isEqualToFloat:

NSDateFormatter

NSDateFormatter+Shothand

  • userDefaultFormatter
  • dateFormatterWithCalendarIndetifiter:localeIdentifiter:timeZoneAbbreviation:

NSObject

NSObject+Equals

[[NSNull null] isNullObject]; // YES
[[NSArray array] isNullObject]; // NO
  • isNullObject
  • isArray
  • isDictionary
  • isSet
  • isString
  • isNumber

NSNull

NSNull+Natural

Provide NSNull like nil

NSDictionary *dic = @{
        @"null-key" : [NSNull null]
};
[[dic objectForKey:@"null-key"] objectForKey:@"empty"]; // nil

※ This feature disable on default. Define OV_USE_NATURAL_NULL, if use this feature.

#define OV_USE_NATURAL_NULL
#import "Overline.h"

Credits

Be sure to thank these contributors:

Coding rules

  • Write tests.
  • Objective-C style naming.
    • and shorthands.