From: Jay Freeman (saurik) Date: Thu, 17 Feb 2011 14:18:51 +0000 (-0800) Subject: Add CydiaScript: a better Objective-C bridge. X-Git-Tag: v1.1.0%b1~330 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/b1ca831d87989d531244c62b6e10631e54a42bfd Add CydiaScript: a better Objective-C bridge. --- diff --git a/MobileCydia.mm b/MobileCydia.mm index 2b6bd1e0..e3167c5f 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -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())