X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/dbf05bfd2ab79568fe706daa9112037192d4d9dd..d9241e234c470731820076c7f38b73a09ecb7627:/libcycript.cy?ds=sidebyside diff --git a/libcycript.cy b/libcycript.cy index 88fe069..6f5ac20 100644 --- a/libcycript.cy +++ b/libcycript.cy @@ -1,5 +1,5 @@ -/* Cycript - Optimizing JavaScript Compiler/Runtime - * Copyright (C) 2009-2015 Jay Freeman (saurik) +/* Cycript - The Truly Universal Scripting Language + * Copyright (C) 2009-2016 Jay Freeman (saurik) */ /* GNU Affero General Public License, Version 3 {{{ */ @@ -86,49 +86,90 @@ $cy_set(RegExp.prototype, { if ("Java" in Cycript) { $cy_set(java.lang.Boolean.prototype, { toCYON: function() { - return `new java.lang.Boolean(${this.value})`; + return `new java.lang.Boolean(${this->value})`; }, }); $cy_set(java.lang.Byte.prototype, { toCYON: function() { - return `new java.lang.Byte(${this.value})`; + return `new java.lang.Byte(${this->value})`; }, }); $cy_set(java.lang.Character.prototype, { toCYON: function() { - return `new java.lang.Character(${this.value})`; + return `new java.lang.Character(${this->value})`; }, }); $cy_set(java.lang.Short.prototype, { toCYON: function() { - return `new java.lang.Short(${this.value})`; + return `new java.lang.Short(${this->value})`; }, }); $cy_set(java.lang.Integer.prototype, { toCYON: function() { - return `new java.lang.Integer(${this.value})`; + return `new java.lang.Integer(${this->value})`; }, }); $cy_set(java.lang.Long.prototype, { toCYON: function() { - return `new java.lang.Long(${this.value})`; + return `new java.lang.Long(${this->value})`; }, }); $cy_set(java.lang.Float.prototype, { toCYON: function() { - return `new java.lang.Float(${this.value})`; + return `new java.lang.Float(${this->value})`; }, }); $cy_set(java.lang.Double.prototype, { toCYON: function() { - return `new java.lang.Double(${this.value})`; + return `new java.lang.Double(${this->value})`; + }, + }); + + $cy_set(java.lang.Object.prototype, { + toCYON: function(key) { + return "#" + this.toString().toCYON(); + }, + + // XXX: due to lack of interface prototypes :( + $cyg: function(key) { + return this.get(key); + }, + + // XXX: due to lack of interface prototypes :( + $cys: function(key, value) { + if ("set" in this) + this.set(key, value); + else + this.put(key, value); + }, + }); +} + +if ("ObjectiveC" in Cycript) { + $cy_set(NSArray.prototype, { + $cyg: function(key) { + return objc_msgSend(this, "objectAtIndex:", key); + }, + + $cys: function(key, value) { + return objc_msgSend(this, "setObject:atIndex:", value, key); + }, + }); + + $cy_set(NSDictionary.prototype, { + $cyg: function(key) { + return objc_msgSend(this, "objectForKey:", key); + }, + + $cys: function(key, value) { + return objc_msgSend(this, "setObject:forKey:", value, key); }, }); }