diff -r 3edd2f19bce2 -r e0424e96e3fd py_ext/modules/svgui/pyjs/lib/_pyjs.js --- a/py_ext/modules/svgui/pyjs/lib/_pyjs.js Wed May 09 00:39:54 2012 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -function pyjs_extend(klass, base) { - function klass_object_inherit() {} - klass_object_inherit.prototype = base.prototype; - klass_object = new klass_object_inherit(); - for (var i in base.prototype.__class__) { - v = base.prototype.__class__[i]; - if (typeof v == "function" && (v.class_method || v.static_method || v.unbound_method)) - { - klass_object[i] = v; - } - } - - function klass_inherit() {} - klass_inherit.prototype = klass_object; - klass.prototype = new klass_inherit(); - klass_object.constructor = klass; - klass.prototype.__class__ = klass_object; - - for (var i in base.prototype) { - v = base.prototype[i]; - if (typeof v == "function" && v.instance_method) - { - klass.prototype[i] = v; - } - } -} - -/* creates a class, derived from bases, with methods and variables */ -function pyjs_type(clsname, bases, methods) -{ - var fn_cls = function() {}; - fn_cls.__name__ = clsname; - var fn = function() { - var instance = new fn_cls(); - if(instance.__init__) instance.__init__.apply(instance, arguments); - return instance; - } - fn_cls.__initialize__ = function() { - if (fn_cls.__was_initialized__) return; - fn_cls.__was_initialized__ = true; - fn_cls.__extend_baseclasses(); - fn_cls.prototype.__class__.__new__ = fn; - fn_cls.prototype.__class__.__name__ = clsname; - } - fn_cls.__extend_baseclasses = function() { - var bi; - for (bi in fn_cls.__baseclasses) - { - var b = fn_cls.__baseclasses[bi]; - if (b.__was_initialized__) - { - continue; - } - b.__initialize__(); - } - for (bi in fn_cls.__baseclasses) - { - var b = fn_cls.__baseclasses[bi]; - pyjs_extend(fn_cls, b); - } - } - if (!bases) { - bases = [pyjslib.__Object]; - } - fn_cls.__baseclasses = bases; - - fn_cls.__initialize__(); - - for (k in methods) { - var mth = methods[k]; - var mtype = typeof mth; - if (mtype == "function" ) { - fn_cls.prototype[k] = mth; - fn_cls.prototype.__class__[k] = function () { - return fn_cls.prototype[k].call.apply( - fn_cls.prototype[k], arguments); - }; - fn_cls.prototype.__class__[k].unbound_method = true; - fn_cls.prototype.instance_method = true; - fn_cls.prototype.__class__[k].__name__ = k; - fn_cls.prototype[k].__name__ = k; - } else { - fn_cls.prototype.__class__[k] = mth; - } - } - return fn; -} -function pyjs_kwargs_call(obj, func, star_args, args) -{ - var call_args; - - if (star_args) - { - if (!pyjslib.isIteratable(star_args)) - { - throw (pyjslib.TypeError(func.__name__ + "() arguments after * must be a sequence" + pyjslib.repr(star_args))); - } - call_args = Array(); - var __i = star_args.__iter__(); - var i = 0; - try { - while (true) { - call_args[i]=__i.next(); - i++; - } - } catch (e) { - if (e != pyjslib.StopIteration) { - throw e; - } - } - - if (args) - { - var n = star_args.length; - for (var i=0; i < args.length; i++) { - call_args[n+i]=args[i]; - } - } - } - else - { - call_args = args; - } - return func.apply(obj, call_args); -} - -function pyjs_kwargs_function_call(func, star_args, args) -{ - return pyjs_kwargs_call(null, func, star_args, args); -} - -function pyjs_kwargs_method_call(obj, method_name, star_args, args) -{ - var method = obj[method_name]; - if (method.parse_kwargs) - { - args = method.parse_kwargs.apply(null, args); - } - return pyjs_kwargs_call(obj, method, star_args, args); -} - -//String.prototype.__getitem__ = String.prototype.charAt; -//String.prototype.upper = String.prototype.toUpperCase; -//String.prototype.lower = String.prototype.toLowerCase; -//String.prototype.find=pyjslib.String_find; -//String.prototype.join=pyjslib.String_join; -//String.prototype.isdigit=pyjslib.String_isdigit; -//String.prototype.__iter__=pyjslib.String___iter__; -// -//String.prototype.__replace=String.prototype.replace; -//String.prototype.replace=pyjslib.String_replace; -// -//String.prototype.split=pyjslib.String_split; -//String.prototype.strip=pyjslib.String_strip; -//String.prototype.lstrip=pyjslib.String_lstrip; -//String.prototype.rstrip=pyjslib.String_rstrip; -//String.prototype.startswith=pyjslib.String_startswith; - -var str = String; -