diff --git a/NSStringEmojize/NSString+Emojize.h b/NSStringEmojize/NSString+Emojize.h index 6f8f143..ca4131d 100644 --- a/NSStringEmojize/NSString+Emojize.h +++ b/NSStringEmojize/NSString+Emojize.h @@ -13,6 +13,9 @@ - (NSString *)emojizedString; + (NSString *)emojizedStringWithString:(NSString *)text; +- (NSString *)unemojizedString; ++ (NSString *)unemojizedStringWithString:(NSString *)text; + (NSDictionary *)emojiAliases; ++ (NSDictionary *)reverseEmojiAliases; @end diff --git a/NSStringEmojize/NSString+Emojize.m b/NSStringEmojize/NSString+Emojize.m index d428c42..b2d70e9 100644 --- a/NSStringEmojize/NSString+Emojize.m +++ b/NSStringEmojize/NSString+Emojize.m @@ -42,6 +42,36 @@ + (NSString *)emojizedStringWithString:(NSString *)text return resultText; } +- (NSString *)unemojizedString +{ + return [NSString unemojizedStringWithString:self]; +} + ++ (NSString *)unemojizedStringWithString:(NSString *)text +{ + NSMutableString *ret = [NSMutableString stringWithString:text]; + [[self reverseEmojiAliases] enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + [ret replaceOccurrencesOfString:key withString:obj options:nil range:NSMakeRange(0, ret.length)]; + }]; + return ret; +} + ++ (NSDictionary *)reverseEmojiAliases +{ + static NSDictionary *_reverseEmojiAliases; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSMutableDictionary *reverseAliases = [NSMutableDictionary new]; + [[self emojiAliases] enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + [reverseAliases setObject:key forKey:obj]; + }]; + + _reverseEmojiAliases = reverseAliases; + }); + return _reverseEmojiAliases; +} + + + (NSDictionary *)emojiAliases { static NSDictionary *_emojiAliases; static dispatch_once_t onceToken;