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);
156 for (var i = 0; i < arguments.length; i++) {
157 s = s + arguments[i];
159 //sdump('D_UTIL','debug:' + s + '\n');
163 function counter_init(id) {
167 function counter_incr(id) {
168 if (! counter[id]) { counter_init(id); }
169 return ++counter[id];
172 function counter_peek(id) {
173 if (! counter[id]) { return 0; }
177 function dump_ns_node( node ) {
180 node[fieldmap["Fieldmapper::biblio::record_node"].fields.id.position]
182 node[fieldmap["Fieldmapper::biblio::record_node"].fields.intra_doc_id.position]
184 node[fieldmap["Fieldmapper::biblio::record_node"].fields.name.position]
186 node[fieldmap["Fieldmapper::biblio::record_node"].fields.type.position]
187 + '> parent_node=<' +
188 node[fieldmap["Fieldmapper::biblio::record_node"].fields.parent_node.position]
193 function nodeset2tree(ns) {
195 if (ns[i].parent_node) {
206 function ns_addChild(ns,p,c) {
207 if (! ns[p].children ) { ns[p].children = []; }
208 ns[p].children.push(ns[c]);
211 function print_tabs(t) {
213 for (var j = 0; j < t; j++ ) { r = r + "\t"; }
217 function pretty_print(s) {
218 var r = ''; var t = 0;
221 r = r + "\n" + print_tabs(t) + s[i]; t++;
222 r = r + "\n" + print_tabs(t);
223 } else if (s[i] == '[') {
224 r = r + "\n" + print_tabs(t) + s[i]; t++;
225 r = r + "\n" + print_tabs(t);
226 } else if (s[i] == '}') {
227 t--; r = r + "\n" + print_tabs(t) + s[i];
228 r = r + "\n" + print_tabs(t);
229 } else if (s[i] == ']') {
230 t--; r = r + "\n" + print_tabs(t) + s[i];
231 r = r + "\n" + print_tabs(t);
232 } else if (s[i] == ',') {
234 r = r + "\n" + print_tabs(t);
242 function super_dump(o,t) {
244 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
246 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
247 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
248 s = s + "typeof = " + typeof(o) + "\n";
250 var string = new XMLSerializer().serializeToString(o);
251 return( string + "\n" );
258 s = s + super_dump(i,t+1);
262 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
263 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
264 if (typeof(value) == 'object') {
265 value = super_dump(value,t+1);
267 s = s + "\ttoString:" + i.toString() + "\tvalue:" + value + "\n";
275 function super_dump_norecurse(o,t) {
277 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
279 s = s + 'o.constructor == Array = ' + (o.constructor == Array) + '\n';
280 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
281 s = s + "typeof = " + typeof(o) + "\n";
283 var string = new XMLSerializer().serializeToString(o);
284 return( string + "\n" );
292 for (var ii = 0; ii < t; ii++) { s = s + '\t'; }
293 s = s + "\tMember#" + c++ + "\tType:" + typeof(value);
294 s = s + "\ttoString:" + i.toString() + "\n";