Skip to content

Commit 31141da

Browse files
committed
Removed history
0 parents  commit 31141da

File tree

73 files changed

+2987
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2987
-0
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
obj
2+
.theos
3+
packages/*
4+
.DS_Store
5+
Font-*
6+
EmojiTester/bin

EmojiFoundation/EMFEmojiCategory.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#import <Foundation/Foundation.h>
2+
3+
@interface EMFEmojiCategory : NSObject
4+
+ (id)_emojiSetForIdentifier:(NSString *)identifier setCount:(NSUInteger *)count; // iOS 10-10.1
5+
+ (NSArray <NSString *> *)_emojiSetForIdentifier:(NSString *)identifier; // iOS 10.2+
6+
- (NSString *)identifier;
7+
@end

EmojiFoundation/EMFEmojiLocaleData.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#import <Foundation/Foundation.h>
2+
3+
@interface EMFEmojiLocaleData : NSObject
4+
@end

EmojiFoundation/EMFEmojiPreferences.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#import <Foundation/Foundation.h>
2+
3+
@interface EMFEmojiPreferences : NSObject
4+
- (void)readEmojiDefaults;
5+
- (void)writeEmojiDefaults;
6+
- (void)resetEmojiDefaults;
7+
@end

EmojiFoundation/EMFEmojiToken.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#import "EMFEmojiLocaleData.h"
2+
3+
@interface EMFEmojiToken : NSObject
4+
+ (instancetype)emojiTokenWithString:(NSString *)string localeData:(EMFEmojiLocaleData *)localeData;
5+
- (NSString *)string;
6+
@end

EmojiFoundation/EMFStringUtilities.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#import "../Types.h"
2+
3+
@interface EMFStringUtilities : NSObject
4+
+ (NSString *)_stringWithUnichar:(UChar32)unichar;
5+
+ (NSString *)_baseFirstCharacterString:(NSString *)string;
6+
+ (NSString *)_baseStringForEmojiString:(NSString *)emojiString;
7+
+ (NSString *)professionSkinToneEmojiBaseKey:(NSString *)emojiString;
8+
+ (NSMutableArray <NSString *> *)_skinToneVariantsForString:(NSString *)emojiString;
9+
+ (UChar32)_firstLongCharacterOfString:(NSString *)string;
10+
+ (int)_skinToneForString:(NSString *)emojiString;
11+
+ (BOOL)_emojiString:(NSString *)emojiString containsSubstring:(NSString *)substring;
12+
+ (BOOL)_genderEmojiBaseStringNeedVariantSelector:(NSString *)emojiBaseString;
13+
+ (BOOL)_hasSkinToneVariantsForString:(NSString *)emojiString;
14+
@end

EmojiFoundation/EmojiFoundation.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#import "EMFEmojiCategory.h"
2+
#import "EMFEmojiLocaleData.h"
3+
#import "EMFEmojiPreferences.h"
4+
#import "EMFEmojiToken.h"
5+
#import "EMFStringUtilities.h"

EmojiTester/Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
TARGET = uikitformac
2+
3+
include $(THEOS)/makefiles/common.mk
4+
5+
TOOL_NAME = EmojiTester
6+
7+
EmojiTester_FILES = ../NSString+MacExtras.m ../PSEmojiUtilities.m ../PSEmojiUtilities+Emoji.m ../PSEmojiUtilities+Functions.m main.m
8+
EmojiTester_CFLAGS = -DFALLBACK_FLC=1
9+
10+
include $(THEOS_MAKE_PATH)/tool.mk
11+
12+
after-all::
13+
@mkdir -p bin
14+
@cp -v $(THEOS_OBJ_DIR)/EmojiTester bin/

EmojiTester/main.m

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#import "../PSEmojiUtilities.h"
4+
5+
void prettyPrint(NSArray <NSString *> *array, BOOL wq, int perLine) {
6+
int x = 1;
7+
NSMutableString *string = [NSMutableString string];
8+
NSLog(@"Total: %lu", (unsigned long)array.count);
9+
for (NSString *substring in array) {
10+
if (wq)
11+
[string appendString:@"@\""];
12+
[string appendString:substring];
13+
if (wq)
14+
[string appendString:@"\","];
15+
else
16+
[string appendString:@","];
17+
if (x++ % perLine == 0) {
18+
NSLog(@"%@", string);
19+
string.string = @"";
20+
}
21+
else
22+
[string appendString:@" "];
23+
}
24+
NSLog(@"%@", string);
25+
}
26+
27+
void printArray(NSString *title, NSArray *array) {
28+
NSLog(@"%@: %@", title, [array componentsJoinedByString:@", "]);
29+
}
30+
31+
NSString *toUTF32(NSString *string) {
32+
if (string.length == 1)
33+
return [NSString stringWithFormat:@"%x", [PSEmojiUtilities firstLongCharacter:string]];
34+
NSMutableArray *utf32 = [NSMutableArray array];
35+
for (int i = 0; i < string.length - 1; i += 2) {
36+
UChar32 cbase = [string characterAtIndex:i];
37+
if ((cbase & 0xFC00) == 0xD800 && i + 1 < string.length) {
38+
UChar32 y = [string characterAtIndex:i + 1];
39+
if ((y & 0xFC00) == 0xDC00)
40+
cbase = (cbase << 10) + y - 0x35FDC00;
41+
} else
42+
--i;
43+
[utf32 addObject:[NSString stringWithFormat:@"%x", cbase]];
44+
}
45+
return [utf32 componentsJoinedByString:@" "];
46+
}
47+
48+
void printWithCodepoints(NSString *title, NSString *emoji) {
49+
NSLog(@"%@: %@ %@", title, emoji, toUTF32(emoji));
50+
}
51+
52+
void testMultiPerson(NSString *emoji) {
53+
static int modifiers[] = { 1, 3, 4, 5, 6, -1, 0 }; // -1 None, 0 silhouette
54+
NSMutableArray *variants = [NSMutableArray array];
55+
for (int i = 0; i < 7; ++i) {
56+
NSString *specifier1 = modifiers[i] == 0 ? @"EMFSkinToneSpecifierTypeFitzpatrickSilhouette" : [PSEmojiUtilities skinToneSpecifierTypeFromEmojiFitzpatrickModifier:modifiers[i]];
57+
for (int j = 0; j < 7; ++j) {
58+
NSString *specifier2 = modifiers[j] == 0 ? @"EMFSkinToneSpecifierTypeFitzpatrickSilhouette" : [PSEmojiUtilities skinToneSpecifierTypeFromEmojiFitzpatrickModifier:modifiers[j]];
59+
NSString *skinned = [PSEmojiUtilities multiPersonStringForString:emoji skinToneVariantSpecifier:@[specifier1, specifier2]];
60+
[variants addObject:skinned];
61+
}
62+
}
63+
NSLog(@"Base %@", emoji);
64+
prettyPrint(variants, YES, 7);
65+
}
66+
67+
int main(int argc, char *argv[], char *envp[]) {
68+
if (argc != 2) {
69+
printf("Usage: EmojiTester [c|u]\n");
70+
return EXIT_FAILURE;
71+
}
72+
const char *opt = argv[1];
73+
bool out = strcmp(opt, "u") == 0;
74+
if (!out && strcmp(opt, "c")) {
75+
printf("Don't\n");
76+
return EXIT_FAILURE;
77+
}
78+
FILE *fp;
79+
char buffer[4096];
80+
if ((fp = fopen("snapshot.txt", out ? "w+" : "r")) == NULL) {
81+
printf("Unable to open file: snapshot.txt\n");
82+
return EXIT_FAILURE;
83+
}
84+
for (NSString *emoji in [PSEmojiUtilities PeopleEmoji]) {
85+
NSMutableString *line = [NSMutableString string];
86+
NSMutableString *skinCodes = [NSMutableString string];
87+
[line appendString:emoji];
88+
if ([PSEmojiUtilities hasSkinToneVariants:emoji]) {
89+
for (NSString *variant in [PSEmojiUtilities skinToneVariants:emoji]) {
90+
[line appendFormat:@" %@", variant];
91+
[skinCodes appendFormat:@" %@ /", toUTF32(variant)];
92+
}
93+
if ([PSEmojiUtilities supportsCoupleSkinToneSelection:emoji])
94+
testMultiPerson(emoji);
95+
[line appendFormat:@" %@ |%@", toUTF32(emoji), skinCodes];
96+
} else
97+
[line appendFormat:@" %@", toUTF32(emoji)];
98+
NSLog(@"%@", line);
99+
const char *cline = [line UTF8String];
100+
if (out) {
101+
fputs(cline, fp);
102+
fputs("\n", fp);
103+
} else {
104+
fgets(buffer, 4096, fp);
105+
size_t len = strlen(buffer);
106+
if (buffer[len - 1] == '\n')
107+
buffer[len - 1] = '\0';
108+
if (strcmp(cline, buffer)) {
109+
printf("Snapshot mismatched!\n");
110+
return EXIT_FAILURE;
111+
}
112+
}
113+
}
114+
fclose(fp);
115+
return 0;
116+
}

0 commit comments

Comments
 (0)