objc/lib/TwitterTextEntity.m (63 lines of code) (raw):
// Copyright 2018 Twitter, Inc.
// Licensed under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0
//
// TwitterTextEntity.m
//
#import "TwitterTextEntity.h"
@implementation TwitterTextEntity
- (instancetype)initWithType:(TwitterTextEntityType)type range:(NSRange)range
{
self = [super init];
if (self) {
_type = type;
_range = range;
}
return self;
}
+ (instancetype)entityWithType:(TwitterTextEntityType)type range:(NSRange)range
{
return [[self alloc] initWithType:type range:range];
}
- (NSComparisonResult)compare:(TwitterTextEntity *)right
{
NSUInteger leftLocation = _range.location;
NSUInteger leftLength = _range.length;
NSRange rightRange = right.range;
NSUInteger rightLocation = rightRange.location;
NSUInteger rightLength = rightRange.length;
if (leftLocation < rightLocation) {
return NSOrderedAscending;
} else if (leftLocation > rightLocation) {
return NSOrderedDescending;
} else if (leftLength < rightLength) {
return NSOrderedAscending;
} else if (leftLength > rightLength) {
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}
- (NSString *)description
{
NSString *typeString = nil;
switch (_type) {
case TwitterTextEntityURL:
typeString = @"URL";
break;
case TwitterTextEntityScreenName:
typeString = @"ScreenName";
break;
case TwitterTextEntityHashtag:
typeString = @"Hashtag";
break;
case TwitterTextEntityListName:
typeString = @"ListName";
break;
case TwitterTextEntitySymbol:
typeString = @"Symbol";
break;
case TwitterTextEntityTweetChar:
typeString = @"TweetChar";
break;
case TwitterTextEntityTweetEmojiChar:
typeString = @"TweetEmojiChar";
break;
}
return [NSString stringWithFormat:@"<%@: %@ %@>", NSStringFromClass([self class]), typeString, NSStringFromRange(_range)];
}
@end