//
//  NSString+RACKeyPathUtilities.m
//  ReactiveCocoa
//
//  Created by Uri Baghin on 05/05/2013.
//  Copyright (c) 2013 GitHub, Inc. All rights reserved.
//

#import "NSString+RACKeyPathUtilities.h"

@implementation NSString (RACKeyPathUtilities)

- (NSArray *)rac_keyPathComponents {
	if (self.length == 0) {
		return nil;
	}
	return [self componentsSeparatedByString:@"."];
}

- (NSString *)rac_keyPathByDeletingLastKeyPathComponent {
	NSUInteger lastDotIndex = [self rangeOfString:@"." options:NSBackwardsSearch].location;
	if (lastDotIndex == NSNotFound) {
		return nil;
	}
	return [self substringToIndex:lastDotIndex];
}

- (NSString *)rac_keyPathByDeletingFirstKeyPathComponent {
	NSUInteger firstDotIndex = [self rangeOfString:@"."].location;
	if (firstDotIndex == NSNotFound) {
		return nil;
	}
	return [self substringFromIndex:firstDotIndex + 1];
}

@end
