samhuri.net-ios/Pods/ObjectiveSugar/Classes/NSNumber+ObjectiveSugar.m

117 lines
2.2 KiB
Objective-C

//
// NSNumber+Rubyfy.m
// Domainchy
//
// Created by Marin Usalj on 11/15/12.
// Copyright (c) 2012 mneorr.com | @mneorr | mneorr@gmail.com. All rights reserved.
//
#import "NSNumber+ObjectiveSugar.h"
@implementation NSNumber (ObjectiveSugar)
- (void)times:(void (^)(void))block {
for (int i = 0; i < self.integerValue; i++)
block();
}
- (void)timesWithIndex:(void (^)(NSUInteger))block {
for (int i = 0; i < self.unsignedIntegerValue; i++)
block(i);
}
- (void)upto:(int)number do:(void (^)(NSInteger))block {
for (NSInteger i = self.integerValue; i <= number; i++)
block(i);
}
- (void)downto:(int)number do:(void (^)(NSInteger))block {
for (NSInteger i = self.integerValue; i >= number; i--)
block(i);
}
- (NSNumber *)second {
return self.seconds;
}
- (NSNumber *)seconds {
return self;
}
- (NSNumber *)minute {
return self.minutes;
}
- (NSNumber *)minutes {
return @(self.floatValue * 60);
}
- (NSNumber *)hour {
return self.hours;
}
- (NSNumber *)hours {
return @(self.floatValue * [@60 minutes].integerValue);
}
- (NSNumber *)day {
return self.days;
}
- (NSNumber *)days {
return @(self.floatValue * [@24 hours].integerValue);
}
- (NSNumber *)week {
return self.weeks;
}
- (NSNumber *)weeks {
return @(self.floatValue * [@7 days].integerValue);
}
- (NSNumber *)fortnight {
return self.fortnights;
}
- (NSNumber *)fortnights {
return @(self.floatValue * [@2 weeks].integerValue);
}
- (NSNumber *)month {
return self.months;
}
- (NSNumber *)months {
return @(self.floatValue * [@30 days].integerValue);
}
- (NSNumber *)year {
return self.years;
}
- (NSNumber *)years {
return @(self.floatValue * [@(365.25) days].integerValue);
}
- (NSDate *)ago {
return [self ago:[NSDate date]];
}
- (NSDate *)ago:(NSDate *)time {
return [NSDate dateWithTimeIntervalSince1970:([time timeIntervalSince1970] - self.floatValue)];
}
- (NSDate *)since:(NSDate *)time {
return [NSDate dateWithTimeIntervalSince1970:([time timeIntervalSince1970] + self.floatValue)];
}
- (NSDate *)until:(NSDate *)time {
return [self ago:time];
}
- (NSDate *)fromNow {
return [self since:[NSDate date]];
}
@end