def intArrayFromString(string, noNull=False): intArray = [] for c in string: intArray.append(ord(c)) if not noNull: intArray.apend(0) return PyV8.JSArray(intArray)
def _get_js_obj(self, ctx, obj): """ Convert Python object to JS object and return it :param PyV8.JSContext ctx: current JS context :param mixed obj: object for convert """ if isinstance(obj, (list, tuple)): js_list = [] for entry in obj: js_list.append(self._get_js_obj(ctx, entry)) return PyV8.JSArray(js_list) elif isinstance(obj, dict): js_obj = ctx.eval('new Object();') for key in obj.keys(): try: js_obj[key] = self._get_js_obj(ctx, obj[key]) except Exception as e: if (not str(e).startswith('Python argument types in')): raise import unicodedata nkey = unicodedata.normalize('NFKD', key).encode( 'ascii', 'ignore') js_obj[nkey] = self._get_js_obj(ctx, obj[key]) return js_obj else: return obj
def _get_js_obj(ctx,obj): #workaround for a problem with PyV8 where it will implicitely convert python lists to js objects #-> we need to explicitely do the conversion. see also the wrapper classes for JSContext above. if isinstance(obj, list): js_list = [] for entry in obj: js_list.append(_get_js_obj(ctx,entry)) return PyV8.JSArray(js_list) elif isinstance(obj, dict): js_obj = ctx.eval("new Object();") for key in obj.keys(): try: js_obj[key] = _get_js_obj(ctx,obj[key]) except Exception, e: # unicode keys raise a Boost.python.aubment Exception which # can't be caught directly: # https://mail.python.org/pipermail/cplusplus-sig/2010-April/015470.html if (not str(e).startswith("Python argument types in")): raise import unicodedata js_obj[unicodedata.normalize('NFKD', key).encode('ascii','ignore')] = _get_js_obj(ctx,obj[key]) return js_obj