]> git.saurik.com Git - cydia.git/commitdiff
Add CydiaScript: a better Objective-C bridge.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 17 Feb 2011 14:18:51 +0000 (06:18 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 17 Feb 2011 14:18:51 +0000 (06:18 -0800)
MobileCydia.mm

index 2b6bd1e011ab114b0b3a4bca47b356082b8945c6..e3167c5feffbb9cd1999fa54bef9931e85e30943 100644 (file)
@@ -4192,6 +4192,42 @@ static NSString *Warning_;
 @end
 /* }}} */
 
+// CydiaScript {{{
+@interface NSObject (CydiaScript)
+- (id) Cydia$webScriptObjectInContext:(WebScriptObject *)context;
+@end
+
+@implementation NSObject (CydiaScript)
+
+- (id) Cydia$webScriptObjectInContext:(WebScriptObject *)context {
+    return self;
+}
+
+@end
+
+@implementation NSArray (CydiaScript)
+
+- (id) Cydia$webScriptObjectInContext:(WebScriptObject *)context {
+    WebScriptObject *object([context evaluateWebScript:@"[]"]);
+    for (size_t i(0), e([self count]); i != e; ++i)
+        [object setWebScriptValueAtIndex:i value:[[self objectAtIndex:i] Cydia$webScriptObjectInContext:context]];
+    return object;
+}
+
+@end
+
+@implementation NSDictionary (CydiaScript)
+
+- (id) Cydia$webScriptObjectInContext:(WebScriptObject *)context {
+    WebScriptObject *object([context evaluateWebScript:@"({})"]);
+    for (id i in self)
+        [object setValue:[[self objectForKey:i] Cydia$webScriptObjectInContext:context] forKey:i];
+    return object;
+}
+
+@end
+// }}}
+
 /* Confirmation Controller {{{ */
 bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     if (!iterator.end())