1 sdump('D_TRACE','Loading util.js\n');
4 var consider_Timeout_default = false;
6 function a_get( obj, i ) { return obj[i]; } // for use in closures inside loops
8 // This executes a series of functions, but tries to give other events/functions a chance to
9 // execute between each one.
10 function chain_exec() {
11 sdump('D_UTIL',arg_dump(arguments));
13 for (var i = 0; i < arguments.length; i++) {
14 var arg = arguments[i];
15 if (typeof(arg)=='function') args.push( arg );
16 else for (var j = 0; j < arg.length; j++) {
17 if (typeof(arg[j])=='function') args.push( arg[j] );
20 if (args.length > 0) setTimeout(
23 if (args.length > 1 ) chain_exec( args.slice(1) );
28 function consider_Timeout( f, t, b) {
29 sdump('D_TIMEOUT', arg_dump(arguments,{0:true,1:true,2:true}));
33 if (consider_Timeout_default)
40 function parse_render_string( obj_string, render_string, regexp ) {
41 sdump('D_UTIL', arg_dump(arguments,{0:true,1:true}));
44 if (!regexp) regexp = /\$\$/g;
45 if (render_string.slice(0,1) == '.') {
46 cmd = obj_string + render_string;
48 cmd = render_string.replace( regexp, obj_string );
55 sdump('D_UTIL', 'cmd = ' + cmd + '\n');
59 function getString( key ) {
61 var bundles = mw.document.getElementById('string_bundles');
62 sdump('D_STRING','bundles = ' + bundles + ' bundles.childNodes.length = ' + bundles.childNodes.length + '\n');
63 for (var i = 0; i < bundles.childNodes.length; i++) {
64 var bundle = bundles.childNodes[i];
65 sdump('D_STRING','\ttrying bundle = ' + bundle + '\n');
68 var string = bundle.getString( key );
71 sdump('D_STRING','\tfound\n');
73 sdump('D_STRING','\tnot found\n');
77 sdump('D_ERROR','string: ' + key + ' not found\n');
81 sdump('D_STRING',key + '=' + s + '\n');
85 function getFormattedString( key, strArray ) {
87 var bundles = mw.document.getElementById('string_bundles');
88 for (var i = i; i < bundles.childNodes.length; i++) {
89 var bundle = bundles[i];
92 var string = bundle.getFormattedString( key, strArray );
97 sdump('D_ERROR','string: ' + key + ' not found\n');
101 sdump('D_STRING',key + '(' + strArray + ')=' + s + '\n');
105 function string_to_array(s) {
107 for (var i = 0; i < s.length; i++ ) {
108 my_array.push( s.charAt(i) );
113 function yesno(value) {
115 case true: case 'true': case '1': case 'on':
122 function dollars_float_to_cents_integer( money ) {
123 // careful to avoid fractions of pennies
124 var money_s = money.toString();
125 // FIXME: strip miscellaneous characters
126 var marray = money_s.split(".");
127 var dollars = marray[0];
128 var cents = marray[1];
130 if (cents.length < 2) {
134 // I'm not sure why these are getting thrown, especially with the code still working
135 sdump('D_ERROR',"cents.length? " + E + "\n");
138 if (cents.length > 2) {
139 sdump('D_ERROR',"We don't round money\n");
140 cents = cents.substr(0,2);
143 sdump('D_ERROR',"cents.length? " + E + "\n");
147 if (parseInt(cents)) total += parseInt(cents);
149 sdump('D_ERROR',"parseInt(cents)? " + E + "\n");
152 if (parseInt(dollars)) total += (parseInt(dollars) * 100);
154 sdump('D_ERROR',"parseInt(dollars)? " + E + "\n");
159 function cents_as_dollars( cents ) {
160 cents = cents.toString();
161 // FIXME: strip miscellaneous characters
163 switch( cents.length ) {
164 case 0: cents = '000'; break;
165 case 1: cents = '00' + cents; break;
168 sdump('D_ERROR',"cents_as_dollars: cents.length? " + E + "\n");
170 return cents.substr(0,cents.length-2) + '.' + cents.substr(cents.length - 2);
175 for (var i = 0; i < arguments.length; i++) {
176 s = s + arguments[i];
178 //sdump('D_UTIL','debug:' + s + '\n');
179 dump('debug:' + s + '\n');
182 function counter_init(id) {
186 function counter_incr(id) {
187 if (! counter[id]) { counter_init(id); }
188 return ++counter[id];
191 function counter_peek(id) {
192 if (! counter[id]) { return 0; }
196 function dump_ns_node( node ) {
199 node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position]
201 node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
203 node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
205 node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
206 + '> parent_node=<' +
207 node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
212 function nodeset2tree(ns) {
214 if (ns[i].parent_node) {
225 function ns_addChild(ns,p,c) {
226 if (! ns[p].children ) { ns[p].children = []; }
227 ns[p].children.push(ns[c]);
230 function print_tabs(t) {
232 for (var j = 0; j < t; j++ ) { r = r + "\t"; }
236 function pretty_print(s) {
237 var r = ''; var t = 0;
240 r = r + "\n" + print_tabs(t) + s[i]; t++;
241 r = r + "\n" + print_tabs(t);
242 } else if (s[i] == '[') {
243 r = r + "\n" + print_tabs(t) + s[i]; t++;
244 r = r + "\n" + print_tabs(t);
245 } else if (s[i] == '}') {
246 t--; r = r + "\n" + print_tabs(t) + s[i];
247 r = r + "\n" + print_tabs(t);
248 } else if (s[i] == ']') {
249 t--; r = r + "\n" + print_tabs(t) + s[i];
250 r = r + "\n" + print_tabs(t);
251 } else if (s[i] == ',') {
253 r = r + "\n" + print_tabs(t);
261 function super_dump(o,t) {
263 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
265 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
266 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
267 s = s + "typeof = " + typeof(o) + "\n";
269 var string = new XMLSerializer().serializeToString(o);
270 return( string + "\n" );
277 s = s + super_dump(i,t+1);
281 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
282 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
283 if (typeof(value) == 'object') {
284 value = super_dump(value,t+1);
286 s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
294 function super_dump_norecurse(o,t) {
296 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
298 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
299 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
300 s = s + "typeof = " + typeof(o) + "\n";
302 var string = new XMLSerializer().serializeToString(o);
303 return( string + "\n" );
311 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
312 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
313 s = s + "\ttoString:" + i.toString() + "\n";