1 #ifndef _JDISP_GLOBAL_JSH
\r
2 #define _JDISP_GLOBAL_JSH
\r
4 OOP_CLASS(Global) = function() {};
\r
6 OOP_METHOD(Global, eval) = function (txt)
\r
11 OOP_METHOD(Global, random) = function (bound)
\r
13 if (+bound === bound) {
\r
14 return Math.floor(Math.random() * bound);
\r
16 return Math.random();
\r
20 OOP_METHOD(Global, gettimeofday) = function ()
\r
22 return (new Date()).getTime();
\r
25 OOP_METHOD(Global, time) = function ()
\r
27 var t1000 = this.gettimeofday();
\r
28 return Math.floor(t1000 / 1000);
\r
31 OOP_METHOD(Global, escapeHtml) = function (str)
\r
33 var d = document.createElement('div');
\r
34 var text = document.createTextNode(str);
\r
35 d.appendChild(text);
\r
36 var ret = d.innerHTML;
\r
42 OOP_METHOD(Global, zeroPrefix) = function (value, digits)
\r
44 if (+value === value) {
\r
46 for (var i=0; i<digits; i++) s += '0';
\r
47 s += String(Number(value));
\r
48 return s.slice(s.length - digits);
\r
50 return Number(value);
\r
54 OOP_METHOD(Global, encodeURIComponent) = function(str)
\r
56 return window.encodeURIComponent.apply(this, arguments);
\r
59 OOP_METHOD(Global, decodeURIComponent) = function(str)
\r
61 var s = window.decodeURIComponent.apply(this, arguments);
\r
62 s = s.replace(/\+/g, ' ');
\r
66 OOP_METHOD(Global, arrayLength) = function (a)
\r
75 OOP_METHOD(Global, assignValues) = function (dst, src, fields)
\r
77 if (IS_OBJECT(fields)) {
\r
78 for (var i in fields) {
\r
80 if (IS_DEFINED(typeof src[k])) {
\r
85 for (var j in src) {
\r
91 OOP_METHOD(Global, quoteString) = function (str, q)
\r
93 if (str === null) return null;
\r
94 var s = String(str);
\r
95 s = s.replace(/\\/g,"\\\\");
\r
98 s = s.replace(/'/g,"\\'");
\r
101 s = s.replace(/"/g,'\\"');
\r
106 s = s.replace(/\n/g,"\\n");
\r
107 s = s.replace(/\t/g,"\\t");
\r
108 s = s.replace(/\f/g,"\\f");
\r
109 // FIXME: make the following line work
\r
110 // s = s.replace(/\b/g,"\\b");
\r
114 OOP_METHOD(Global, dumpVar) = function (obj, wantFunction, maxRecursion)
\r
119 if (IS_DEFINED(maxRecursion)) maxLv = Number(maxRecursion);
\r
121 var f = function (o, lv) {
\r
123 return {value:'(error)', error: 'Too many levels of recursion.'};
\r
126 var v = new Object();
\r
131 v.value = String(o);
\r
134 v.value = me.quoteString(o, qq);
\r
137 v.value = "/* function " + o + " */";
\r
138 v.isFunction = true;
\r
141 v.value = "undefined";
\r
144 // FIXME: Make it possible to dump arrays.
\r
147 } else if (IS_ARRAY(o)) {
\r
148 // FIXME: handle the case where o is a pseudo hash.
\r
149 var lp1 = new PROJECT_PREFIX.text.ListPrinter('[', ',', ']');
\r
151 var ret1 = f(o[k], lv + 1);
\r
152 if (!ret1.isFunction || wantFunction) {
\r
153 lp1.append(ret1.value);
\r
156 v.value = lp1.toString();
\r
158 var lp2 = new PROJECT_PREFIX.text.ListPrinter('{', ',', '}');
\r
160 var ret2 = f(o[k], lv + 1);
\r
161 if (!ret2.isFunction || wantFunction) {
\r
162 lp2.append(me.quoteString(k, qq) + ":" + ret2.value);
\r
165 v.value = lp2.toString();
\r
169 FATAL('invalid data type: ' + t);
\r
179 OOP_METHOD(Global, invokeLater) = function (func, timeout)
\r
181 var t = (IS_DEFINED(timeout)) ? timeout : 0;
\r
182 if (IS_FUNCTION(func)) {
\r
183 setTimeout(func, t);
\r
187 #endif /* _JDISP_GLOBAL_JSH */
\r