Skip to content

Commit 1009251

Browse files
Update Rakefile.
1 parent b407ec3 commit 1009251

File tree

2 files changed

+55
-47
lines changed

2 files changed

+55
-47
lines changed

Classes/Private/JSBScriptingSupport+Private.m

Lines changed: 52 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -30,50 +30,58 @@ + (void)setupSupportFunctionsToContext:(JSContext *)context
3030
initializedContext = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory];
3131
}
3232
if (![initializedContext containsObject:context]) {
33-
context[@"__JSB_JSBScriptingSupport"] = self;
34-
[context evaluateScript:
35-
@"JSB = (function() {\n"
36-
@" var namespace = {\n"
37-
@" defineClass: function(declaration, instanceMembers, staticMembers) {\n"
38-
@" return __JSB_JSBScriptingSupport.defineClass(declaration,"
39-
@" instanceMembers == null ? {} : instanceMembers,"
40-
@" staticMembers == null ? {} : staticMembers);\n"
41-
@" },\n"
42-
@" define: function(declaration, instanceMembers, staticMembers) {\n"
43-
@" JSB.dump('`define` is deprecated, use `defineClass` instead.');\n"
44-
@" return __JSB_JSBScriptingSupport.defineClass(declaration, instanceMembers, staticMembers);\n"
45-
@" },\n"
46-
@" require: function(name) {\n"
47-
@" return __JSB_JSBScriptingSupport.require(name);\n"
48-
@" },\n"
49-
@" exports: {},\n"
50-
@" selector: function(str) {\n"
51-
@" return __JSB_JSBScriptingSupport.selectorFromString(str);\n"
52-
@" },\n"
53-
@" dispatch_async: function(queue, block) {\n"
54-
@" return __JSB_JSBScriptingSupport.dispatch_async(queue, block);\n"
55-
@" },\n"
56-
@" dispatch_get_global_queue: function(priority, flags) {\n"
57-
@" return __JSB_JSBScriptingSupport.dispatch_get_global_queue(priority, flags);\n"
58-
@" },\n"
59-
@" dispatch_get_main_queue: function() {\n"
60-
@" return __JSB_JSBScriptingSupport.dispatch_get_main_queue();\n"
61-
@" },\n"
62-
@" log: function(format) {\n"
63-
@" var args = [];\n"
64-
@" for (var i = 1; i < arguments.length; i++) {\n"
65-
@" args.push(arguments[i]);\n"
66-
@" }\n"
67-
@" return __JSB_JSBScriptingSupport.log(format, args);\n"
68-
@" },\n"
69-
@" dump: function(obj) {\n"
70-
@" return __JSB_JSBScriptingSupport.dump(obj);\n"
71-
@" }\n"
72-
@" };\n"
73-
@"\n"
74-
@" return namespace;\n"
75-
@"})();\n"
76-
];
33+
NSString *UUID = [[[NSUUID UUID] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""];
34+
NSString *className = [NSString stringWithFormat:@"__JSB_%@$%@", NSStringFromClass(self), UUID];
35+
36+
context[className] = self;
37+
38+
NSString *placeholder = @"${CLASS_NAME}";
39+
NSString *template =
40+
@"var namespace = {\n"
41+
@" defineClass: function(declaration, instanceMembers, staticMembers) {\n"
42+
@" return ${CLASS_NAME}.defineClass(declaration,"
43+
@" instanceMembers == null ? {} : instanceMembers,"
44+
@" staticMembers == null ? {} : staticMembers);\n"
45+
@" },\n"
46+
@" define: function(declaration, instanceMembers, staticMembers) {\n"
47+
@" JSB.dump('`define` is deprecated, use `defineClass` instead.');\n"
48+
@" return ${CLASS_NAME}.defineClass(declaration, instanceMembers, staticMembers);\n"
49+
@" },\n"
50+
@" require: function(name) {\n"
51+
@" return ${CLASS_NAME}.require(name);\n"
52+
@" },\n"
53+
@" exports: {},\n"
54+
@" selector: function(str) {\n"
55+
@" return ${CLASS_NAME}.selectorFromString(str);\n"
56+
@" },\n"
57+
@" dispatch_async: function(queue, block) {\n"
58+
@" return ${CLASS_NAME}.dispatch_async(queue, block);\n"
59+
@" },\n"
60+
@" dispatch_get_global_queue: function(priority, flags) {\n"
61+
@" return ${CLASS_NAME}.dispatch_get_global_queue(priority, flags);\n"
62+
@" },\n"
63+
@" dispatch_get_main_queue: function() {\n"
64+
@" return ${CLASS_NAME}.dispatch_get_main_queue();\n"
65+
@" },\n"
66+
@" log: function(format) {\n"
67+
@" var args = [];\n"
68+
@" for (var i = 1; i < arguments.length; i++) {\n"
69+
@" args.push(arguments[i]);\n"
70+
@" }\n"
71+
@" return ${CLASS_NAME}.log(format, args);\n"
72+
@" },\n"
73+
@" dump: function(obj) {\n"
74+
@" return ${CLASS_NAME}.dump(obj);\n"
75+
@" }\n"
76+
@"};\n"
77+
@"\n"
78+
@"return namespace;";
79+
80+
NSString *script = [template stringByReplacingOccurrencesOfString:placeholder withString:className];
81+
82+
JSValue *function = context[@"Function"];
83+
JSValue *value = [function constructWithArguments:@[script]];
84+
context[@"JSB"] = [value callWithArguments:nil];
7785

7886
[initializedContext addObject:context];
7987
}

Rakefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ desc "build"
88
task :build, :workspace, :schemes do |t, args|
99
schemes = args[:schemes].gsub(/'/, '').split(' ')
1010
schemes.each do |scheme|
11-
sh "xcodebuild -workspace #{args[:workspace]} -scheme #{scheme} CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO | xcpretty -c"
11+
sh "xcodebuild -workspace #{args[:workspace]} -scheme #{scheme} CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO | xcpretty -c; exit ${PIPESTATUS[0]}"
1212
end
1313
end
1414

1515
desc "clean"
1616
task :clean, :workspace, :schemes do |t, args|
1717
schemes = args[:schemes].gsub(/'/, '').split(' ')
1818
schemes.each do |scheme|
19-
sh "xcodebuild clean -workspace #{args[:workspace]} -scheme #{scheme} CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO | xcpretty -c"
19+
sh "xcodebuild clean -workspace #{args[:workspace]} -scheme #{scheme} CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO | xcpretty -c; exit ${PIPESTATUS[0]}"
2020
end
2121
end
2222

@@ -25,7 +25,7 @@ task :test, :workspace, :schemes do |t, args|
2525
schemes = args[:schemes].gsub(/'/, '').split(' ')
2626
schemes.each do |scheme|
2727
DESTINATIONS.each do |destination|
28-
sh "xcodebuild test -workspace #{args[:workspace]} -scheme #{scheme} -configuration Debug -sdk iphonesimulator -destination \"#{destination}\" | xcpretty -tc"
28+
sh "xcodebuild test -workspace #{args[:workspace]} -scheme #{scheme} -configuration Debug -sdk iphonesimulator -destination \"#{destination}\" | xcpretty -tc; exit ${PIPESTATUS[0]}"
2929
end
3030
end
3131
end

0 commit comments

Comments
 (0)