Example #1
0
 def intArrayFromString(string, noNull=False):
     intArray = []
     for c in string:
         intArray.append(ord(c))
     if not noNull:
         intArray.apend(0)
     return PyV8.JSArray(intArray)
Example #2
0
 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
Example #3
0
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