New file |
| | |
| | | /************************************************************ |
| | | * * Hyphenate CONFIDENTIAL |
| | | * __________________ |
| | | * Copyright (C) 2016 Hyphenate Inc. All rights reserved. |
| | | * |
| | | * NOTICE: All information contained herein is, and remains |
| | | * the property of Hyphenate Inc. |
| | | * Dissemination of this information or reproduction of this material |
| | | * is strictly forbidden unless prior written permission is obtained |
| | | * from Hyphenate Inc. |
| | | */ |
| | | |
| | | #import "EaseEmoji.h" |
| | | #import "EaseEmojiEmoticons.h" |
| | | |
| | | |
| | | @implementation EaseEmoji |
| | | |
| | | + (NSString *)emojiWithCode:(int)code |
| | | { |
| | | int sym = EMOJI_CODE_TO_SYMBOL(code); |
| | | return [[NSString alloc] initWithBytes:&sym length:sizeof(sym) encoding:NSUTF8StringEncoding]; |
| | | } |
| | | |
| | | + (NSArray *)allEmoji |
| | | { |
| | | NSMutableArray *array = [NSMutableArray new]; |
| | | [array addObjectsFromArray:[EaseEmojiEmoticons allEmoticons]]; |
| | | return array; |
| | | } |
| | | |
| | | + (BOOL)stringContainsEmoji:(NSString *)string |
| | | { |
| | | __block BOOL returnValue = NO; |
| | | |
| | | [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) |
| | | options:NSStringEnumerationByComposedCharacterSequences |
| | | usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) { |
| | | const unichar hs = [substring characterAtIndex:0]; |
| | | if (0xd800 <= hs && hs <= 0xdbff) { |
| | | if (substring.length > 1) { |
| | | const unichar ls = [substring characterAtIndex:1]; |
| | | const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000; |
| | | if (0x1d000 <= uc && uc <= 0x1f77f) { |
| | | returnValue = YES; |
| | | } |
| | | } |
| | | } else if (substring.length > 1) { |
| | | const unichar ls = [substring characterAtIndex:1]; |
| | | if (ls == 0x20e3) { |
| | | returnValue = YES; |
| | | } |
| | | } else { |
| | | if (0x2100 <= hs && hs <= 0x27ff) { |
| | | returnValue = YES; |
| | | } else if (0x2B05 <= hs && hs <= 0x2b07) { |
| | | returnValue = YES; |
| | | } else if (0x2934 <= hs && hs <= 0x2935) { |
| | | returnValue = YES; |
| | | } else if (0x3297 <= hs && hs <= 0x3299) { |
| | | returnValue = YES; |
| | | } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) { |
| | | returnValue = YES; |
| | | } |
| | | } |
| | | }]; |
| | | |
| | | return returnValue; |
| | | } |
| | | |
| | | @end |