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 function consider_Timeout( f, t, b) {
9 sdump('D_TIMEOUT', arg_dump(arguments,{0:true,1:true,2:true}));
13 if (consider_Timeout_default)
20 function parse_render_string( obj_string, render_string, regexp ) {
21 sdump('D_UTIL', arg_dump(arguments,{0:true,1:true}));
24 if (!regexp) regexp = /\$\$/g;
25 if (render_string.slice(0,1) == '.') {
26 cmd = obj_string + render_string;
28 cmd = render_string.replace( regexp, obj_string );
35 sdump('D_UTIL', 'cmd = ' + cmd + '\n');
39 function getString( key ) {
41 var bundles = mw.document.getElementById('string_bundles');
42 sdump('D_STRING','bundles = ' + bundles + ' bundles.childNodes.length = ' + bundles.childNodes.length + '\n');
43 for (var i = 0; i < bundles.childNodes.length; i++) {
44 var bundle = bundles.childNodes[i];
45 sdump('D_STRING','\ttrying bundle = ' + bundle + '\n');
48 var string = bundle.getString( key );
51 sdump('D_STRING','\tfound\n');
53 sdump('D_STRING','\tnot found\n');
57 sdump('D_ERROR','string: ' + key + ' not found\n');
61 sdump('D_STRING',key + '=' + s + '\n');
65 function getFormattedString( key, strArray ) {
67 var bundles = mw.document.getElementById('string_bundles');
68 for (var i = i; i < bundles.childNodes.length; i++) {
69 var bundle = bundles[i];
72 var string = bundle.getFormattedString( key, strArray );
77 sdump('D_ERROR','string: ' + key + ' not found\n');
81 sdump('D_STRING',key + '(' + strArray + ')=' + s + '\n');
85 function string_to_array(s) {
87 for (var i = 0; i < s.length; i++ ) {
88 my_array.push( s.charAt(i) );
93 function yesno(value) {
95 case true: case 'true': case '1': case 'on':
102 function dollars_float_to_cents_integer( money ) {
103 // careful to avoid fractions of pennies
104 var money_s = money.toString();
105 // FIXME: strip miscellaneous characters
106 var marray = money_s.split(".");
107 var dollars = marray[0];
108 var cents = marray[1];
110 if (cents.length < 2) {
114 // I'm not sure why these are getting thrown, especially with the code still working
115 sdump('D_ERROR',"cents.length? " + E + "\n");
118 if (cents.length > 2) {
119 sdump('D_ERROR',"We don't round money\n");
120 cents = cents.substr(0,2);
123 sdump('D_ERROR',"cents.length? " + E + "\n");
127 if (parseInt(cents)) total += parseInt(cents);
129 sdump('D_ERROR',"parseInt(cents)? " + E + "\n");
132 if (parseInt(dollars)) total += (parseInt(dollars) * 100);
134 sdump('D_ERROR',"parseInt(dollars)? " + E + "\n");
139 function cents_as_dollars( cents ) {
140 cents = cents.toString();
141 // FIXME: strip miscellaneous characters
143 switch( cents.length ) {
144 case 0: cents = '000'; break;
145 case 1: cents = '00' + cents; break;
148 sdump('D_ERROR',"cents_as_dollars: cents.length? " + E + "\n");
150 return cents.substr(0,cents.length-2) + '.' + cents.substr(cents.length - 2);
155 for (var i = 0; i < arguments.length; i++) {
156 s = s + arguments[i];
158 //sdump('D_UTIL','debug:' + s + '\n');
159 dump('debug:' + s + '\n');
162 function counter_init(id) {
166 function counter_incr(id) {
167 if (! counter[id]) { counter_init(id); }
168 return ++counter[id];
171 function counter_peek(id) {
172 if (! counter[id]) { return 0; }
176 function dump_ns_node( node ) {
179 node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position]
181 node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
183 node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
185 node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
186 + '> parent_node=<' +
187 node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
192 function nodeset2tree(ns) {
194 if (ns[i].parent_node) {
205 function ns_addChild(ns,p,c) {
206 if (! ns[p].children ) { ns[p].children = []; }
207 ns[p].children.push(ns[c]);
210 function print_tabs(t) {
212 for (var j = 0; j < t; j++ ) { r = r + "\t"; }
216 function pretty_print(s) {
217 var r = ''; var t = 0;
220 r = r + "\n" + print_tabs(t) + s[i]; t++;
221 r = r + "\n" + print_tabs(t);
222 } else if (s[i] == '[') {
223 r = r + "\n" + print_tabs(t) + s[i]; t++;
224 r = r + "\n" + print_tabs(t);
225 } else if (s[i] == '}') {
226 t--; r = r + "\n" + print_tabs(t) + s[i];
227 r = r + "\n" + print_tabs(t);
228 } else if (s[i] == ']') {
229 t--; r = r + "\n" + print_tabs(t) + s[i];
230 r = r + "\n" + print_tabs(t);
231 } else if (s[i] == ',') {
233 r = r + "\n" + print_tabs(t);
241 function super_dump(o,t) {
243 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
245 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
246 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
247 s = s + "typeof = " + typeof(o) + "\n";
249 var string = new XMLSerializer().serializeToString(o);
250 return( string + "\n" );
257 s = s + super_dump(i,t+1);
261 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
262 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
263 if (typeof(value) == 'object') {
264 value = super_dump(value,t+1);
266 s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
274 function super_dump_norecurse(o,t) {
276 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
278 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
279 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
280 s = s + "typeof = " + typeof(o) + "\n";
282 var string = new XMLSerializer().serializeToString(o);
283 return( string + "\n" );
291 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
292 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
293 s = s + "\ttoString:" + i.toString() + "\n";