Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / JU / PT.js
1 Clazz.declarePackage ("JU");
2 Clazz.load (null, "JU.PT", ["java.lang.Boolean", "$.Double", "$.Float", "$.Number", "java.util.Map", "javajs.api.JSONEncodable", "JU.AU", "$.DF", "$.Lst", "$.M34", "$.M4", "$.SB"], function () {
3 c$ = Clazz.declareType (JU, "PT");
4 c$.parseInt = Clazz.defineMethod (c$, "parseInt", 
5 function (str) {
6 return JU.PT.parseIntNext (str,  Clazz.newIntArray (-1, [0]));
7 }, "~S");
8 c$.parseIntNext = Clazz.defineMethod (c$, "parseIntNext", 
9 function (str, next) {
10 var cch = str.length;
11 if (next[0] < 0 || next[0] >= cch) return -2147483648;
12 return JU.PT.parseIntChecked (str, cch, next);
13 }, "~S,~A");
14 c$.parseIntChecked = Clazz.defineMethod (c$, "parseIntChecked", 
15 function (str, ichMax, next) {
16 var digitSeen = false;
17 var value = 0;
18 var ich = next[0];
19 if (ich < 0) return -2147483648;
20 var ch;
21 while (ich < ichMax && JU.PT.isWhiteSpace (str, ich)) ++ich;
22
23 var negative = false;
24 if (ich < ichMax && str.charCodeAt (ich) == 45) {
25 negative = true;
26 ++ich;
27 }while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
28 value = value * 10 + (ch - 48);
29 digitSeen = true;
30 ++ich;
31 }
32 if (!digitSeen) value = -2147483648;
33  else if (negative) value = -value;
34 next[0] = ich;
35 return value;
36 }, "~S,~N,~A");
37 c$.isWhiteSpace = Clazz.defineMethod (c$, "isWhiteSpace", 
38 function (str, ich) {
39 var ch;
40 return (ich >= 0 && ((ch = str.charAt (ich)) == ' ' || ch == '\t' || ch == '\n'));
41 }, "~S,~N");
42 c$.parseFloatChecked = Clazz.defineMethod (c$, "parseFloatChecked", 
43 function (str, ichMax, next, isStrict) {
44 var digitSeen = false;
45 var ich = next[0];
46 if (isStrict && str.indexOf ('\n') != str.lastIndexOf ('\n')) return NaN;
47 while (ich < ichMax && JU.PT.isWhiteSpace (str, ich)) ++ich;
48
49 var negative = false;
50 if (ich < ichMax && str.charAt (ich) == '-') {
51 ++ich;
52 negative = true;
53 }var ch = 0;
54 var ival = 0;
55 var ival2 = 0;
56 while (ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
57 ival = (ival * 10) + (ch - 48) * 1;
58 ++ich;
59 digitSeen = true;
60 }
61 var isDecimal = false;
62 var iscale = 0;
63 var nzero = (ival == 0 ? -1 : 0);
64 if (ch == 46) {
65 isDecimal = true;
66 while (++ich < ichMax && (ch = str.charCodeAt (ich)) >= 48 && ch <= 57) {
67 digitSeen = true;
68 if (nzero < 0) {
69 if (ch == 48) {
70 nzero--;
71 continue;
72 }nzero = -nzero;
73 }if (iscale < JU.PT.decimalScale.length) {
74 ival2 = (ival2 * 10) + (ch - 48) * 1;
75 iscale++;
76 }}
77 }var value;
78 if (!digitSeen) {
79 value = NaN;
80 } else if (ival2 > 0) {
81 value = ival2 * JU.PT.decimalScale[iscale - 1];
82 if (nzero > 1) {
83 if (nzero - 2 < JU.PT.decimalScale.length) {
84 value *= JU.PT.decimalScale[nzero - 2];
85 } else {
86 value *= Math.pow (10, 1 - nzero);
87 }} else {
88 value += ival;
89 }} else {
90 value = ival;
91 }var isExponent = false;
92 if (ich < ichMax && (ch == 69 || ch == 101 || ch == 68)) {
93 isExponent = true;
94 if (++ich >= ichMax) return NaN;
95 ch = str.charCodeAt (ich);
96 if ((ch == 43) && (++ich >= ichMax)) return NaN;
97 next[0] = ich;
98 var exponent = JU.PT.parseIntChecked (str, ichMax, next);
99 if (exponent == -2147483648) return NaN;
100 if (exponent > 0 && exponent <= JU.PT.tensScale.length) value *= JU.PT.tensScale[exponent - 1];
101  else if (exponent < 0 && -exponent <= JU.PT.decimalScale.length) value *= JU.PT.decimalScale[-exponent - 1];
102  else if (exponent != 0) value *= Math.pow (10, exponent);
103 } else {
104 next[0] = ich;
105 }if (negative) value = -value;
106 if (value == Infinity) value = 3.4028235E38;
107 return (!isStrict || (!isExponent || isDecimal) && JU.PT.checkTrailingText (str, next[0], ichMax) ? value : NaN);
108 }, "~S,~N,~A,~B");
109 c$.checkTrailingText = Clazz.defineMethod (c$, "checkTrailingText", 
110 function (str, ich, ichMax) {
111 var ch;
112 while (ich < ichMax && (JU.PT.isWhitespace (ch = str.charAt (ich)) || ch == ';')) ++ich;
113
114 return (ich == ichMax);
115 }, "~S,~N,~N");
116 c$.parseFloatArray = Clazz.defineMethod (c$, "parseFloatArray", 
117 function (str) {
118 return JU.PT.parseFloatArrayNext (str,  Clazz.newIntArray (1, 0), null, null, null);
119 }, "~S");
120 c$.parseFloatArrayInfested = Clazz.defineMethod (c$, "parseFloatArrayInfested", 
121 function (tokens, data) {
122 var len = data.length;
123 var nTokens = tokens.length;
124 var n = 0;
125 var max = 0;
126 for (var i = 0; i >= 0 && i < len && n < nTokens; i++) {
127 var f;
128 while (Float.isNaN (f = JU.PT.parseFloat (tokens[n++])) && n < nTokens) {
129 }
130 if (!Float.isNaN (f)) data[(max = i)] = f;
131 if (n == nTokens) break;
132 }
133 return max + 1;
134 }, "~A,~A");
135 c$.parseFloatArrayNext = Clazz.defineMethod (c$, "parseFloatArrayNext", 
136 function (str, next, f, strStart, strEnd) {
137 var n = 0;
138 var pt = next[0];
139 if (pt >= 0) {
140 if (strStart != null) {
141 var p = str.indexOf (strStart, pt);
142 if (p >= 0) next[0] = p + strStart.length;
143 }str = str.substring (next[0]);
144 pt = (strEnd == null ? -1 : str.indexOf (strEnd));
145 if (pt < 0) pt = str.length;
146  else str = str.substring (0, pt);
147 next[0] += pt + 1;
148 var tokens = JU.PT.getTokens (str);
149 if (f == null) f =  Clazz.newFloatArray (tokens.length, 0);
150 n = JU.PT.parseFloatArrayInfested (tokens, f);
151 }if (f == null) return  Clazz.newFloatArray (0, 0);
152 for (var i = n; i < f.length; i++) f[i] = NaN;
153
154 return f;
155 }, "~S,~A,~A,~S,~S");
156 c$.parseFloatRange = Clazz.defineMethod (c$, "parseFloatRange", 
157 function (str, ichMax, next) {
158 var cch = str.length;
159 if (ichMax > cch) ichMax = cch;
160 if (next[0] < 0 || next[0] >= ichMax) return NaN;
161 return JU.PT.parseFloatChecked (str, ichMax, next, false);
162 }, "~S,~N,~A");
163 c$.parseFloatNext = Clazz.defineMethod (c$, "parseFloatNext", 
164 function (str, next) {
165 var cch = (str == null ? -1 : str.length);
166 return (next[0] < 0 || next[0] >= cch ? NaN : JU.PT.parseFloatChecked (str, cch, next, false));
167 }, "~S,~A");
168 c$.parseFloatStrict = Clazz.defineMethod (c$, "parseFloatStrict", 
169 function (str) {
170 var cch = str.length;
171 if (cch == 0) return NaN;
172 return JU.PT.parseFloatChecked (str, cch,  Clazz.newIntArray (-1, [0]), true);
173 }, "~S");
174 c$.parseFloat = Clazz.defineMethod (c$, "parseFloat", 
175 function (str) {
176 return JU.PT.parseFloatNext (str,  Clazz.newIntArray (-1, [0]));
177 }, "~S");
178 c$.parseIntRadix = Clazz.defineMethod (c$, "parseIntRadix", 
179 function (s, i) {
180 {
181 return Integer.parseIntRadix(s, i);
182 }}, "~S,~N");
183 c$.getTokens = Clazz.defineMethod (c$, "getTokens", 
184 function (line) {
185 return JU.PT.getTokensAt (line, 0);
186 }, "~S");
187 c$.parseToken = Clazz.defineMethod (c$, "parseToken", 
188 function (str) {
189 return JU.PT.parseTokenNext (str,  Clazz.newIntArray (-1, [0]));
190 }, "~S");
191 c$.parseTrimmed = Clazz.defineMethod (c$, "parseTrimmed", 
192 function (str) {
193 return JU.PT.parseTrimmedRange (str, 0, str.length);
194 }, "~S");
195 c$.parseTrimmedAt = Clazz.defineMethod (c$, "parseTrimmedAt", 
196 function (str, ichStart) {
197 return JU.PT.parseTrimmedRange (str, ichStart, str.length);
198 }, "~S,~N");
199 c$.parseTrimmedRange = Clazz.defineMethod (c$, "parseTrimmedRange", 
200 function (str, ichStart, ichMax) {
201 var cch = str.length;
202 if (ichMax < cch) cch = ichMax;
203 if (cch < ichStart) return "";
204 return JU.PT.parseTrimmedChecked (str, ichStart, cch);
205 }, "~S,~N,~N");
206 c$.getTokensAt = Clazz.defineMethod (c$, "getTokensAt", 
207 function (line, ich) {
208 if (line == null) return null;
209 var cchLine = line.length;
210 if (ich < 0 || ich > cchLine) return null;
211 var tokenCount = JU.PT.countTokens (line, ich);
212 var tokens =  new Array (tokenCount);
213 var next =  Clazz.newIntArray (1, 0);
214 next[0] = ich;
215 for (var i = 0; i < tokenCount; ++i) tokens[i] = JU.PT.parseTokenChecked (line, cchLine, next);
216
217 return tokens;
218 }, "~S,~N");
219 c$.countTokens = Clazz.defineMethod (c$, "countTokens", 
220 function (line, ich) {
221 var tokenCount = 0;
222 if (line != null) {
223 var ichMax = line.length;
224 while (true) {
225 while (ich < ichMax && JU.PT.isWhiteSpace (line, ich)) ++ich;
226
227 if (ich == ichMax) break;
228 ++tokenCount;
229 do {
230 ++ich;
231 } while (ich < ichMax && !JU.PT.isWhiteSpace (line, ich));
232 }
233 }return tokenCount;
234 }, "~S,~N");
235 c$.parseTokenNext = Clazz.defineMethod (c$, "parseTokenNext", 
236 function (str, next) {
237 var cch = str.length;
238 return (next[0] < 0 || next[0] >= cch ? null : JU.PT.parseTokenChecked (str, cch, next));
239 }, "~S,~A");
240 c$.parseTokenRange = Clazz.defineMethod (c$, "parseTokenRange", 
241 function (str, ichMax, next) {
242 var cch = str.length;
243 if (ichMax > cch) ichMax = cch;
244 return (next[0] < 0 || next[0] >= ichMax ? null : JU.PT.parseTokenChecked (str, ichMax, next));
245 }, "~S,~N,~A");
246 c$.parseTokenChecked = Clazz.defineMethod (c$, "parseTokenChecked", 
247 function (str, ichMax, next) {
248 var ich = next[0];
249 while (ich < ichMax && JU.PT.isWhiteSpace (str, ich)) ++ich;
250
251 var ichNonWhite = ich;
252 while (ich < ichMax && !JU.PT.isWhiteSpace (str, ich)) ++ich;
253
254 next[0] = ich;
255 return (ichNonWhite == ich ? null : str.substring (ichNonWhite, ich));
256 }, "~S,~N,~A");
257 c$.parseTrimmedChecked = Clazz.defineMethod (c$, "parseTrimmedChecked", 
258 function (str, ich, ichMax) {
259 while (ich < ichMax && JU.PT.isWhiteSpace (str, ich)) ++ich;
260
261 var ichLast = ichMax - 1;
262 while (ichLast >= ich && JU.PT.isWhiteSpace (str, ichLast)) --ichLast;
263
264 return (ichLast < ich ? "" : str.substring (ich, ichLast + 1));
265 }, "~S,~N,~N");
266 c$.dVal = Clazz.defineMethod (c$, "dVal", 
267 function (s) {
268 {
269 if(s==null)
270 throw new NumberFormatException("null");
271 var d=parseFloat(s);
272 if(isNaN(d))
273 throw new NumberFormatException("Not a Number : "+s);
274 return d
275 }}, "~S");
276 c$.fVal = Clazz.defineMethod (c$, "fVal", 
277 function (s) {
278 {
279 return this.dVal(s);
280 }}, "~S");
281 c$.parseIntRange = Clazz.defineMethod (c$, "parseIntRange", 
282 function (str, ichMax, next) {
283 var cch = str.length;
284 if (ichMax > cch) ichMax = cch;
285 return (next[0] < 0 || next[0] >= ichMax ? -2147483648 : JU.PT.parseIntChecked (str, ichMax, next));
286 }, "~S,~N,~A");
287 c$.parseFloatArrayData = Clazz.defineMethod (c$, "parseFloatArrayData", 
288 function (tokens, data) {
289 JU.PT.parseFloatArrayDataN (tokens, data, data.length);
290 }, "~A,~A");
291 c$.parseFloatArrayDataN = Clazz.defineMethod (c$, "parseFloatArrayDataN", 
292 function (tokens, data, nData) {
293 for (var i = nData; --i >= 0; ) data[i] = (i >= tokens.length ? NaN : JU.PT.parseFloat (tokens[i]));
294
295 }, "~A,~A,~N");
296 c$.split = Clazz.defineMethod (c$, "split", 
297 function (text, run) {
298 if (text.length == 0) return  new Array (0);
299 var n = 1;
300 var i = text.indexOf (run);
301 var lines;
302 var runLen = run.length;
303 if (i < 0 || runLen == 0) {
304 lines =  new Array (1);
305 lines[0] = text;
306 return lines;
307 }var len = text.length - runLen;
308 for (; i >= 0 && i < len; n++) i = text.indexOf (run, i + runLen);
309
310 lines =  new Array (n);
311 i = 0;
312 var ipt = 0;
313 var pt = 0;
314 for (; (ipt = text.indexOf (run, i)) >= 0 && pt + 1 < n; ) {
315 lines[pt++] = text.substring (i, ipt);
316 i = ipt + runLen;
317 }
318 if (text.indexOf (run, len) != len) len += runLen;
319 lines[pt] = text.substring (i, len);
320 return lines;
321 }, "~S,~S");
322 c$.getQuotedStringAt = Clazz.defineMethod (c$, "getQuotedStringAt", 
323 function (line, ipt0) {
324 var next =  Clazz.newIntArray (-1, [ipt0]);
325 return JU.PT.getQuotedStringNext (line, next);
326 }, "~S,~N");
327 c$.getQuotedStringNext = Clazz.defineMethod (c$, "getQuotedStringNext", 
328 function (line, next) {
329 var i = next[0];
330 if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return "";
331 var pt = i + 1;
332 var len = line.length;
333 while (++i < len && line.charAt (i) != '"') if (line.charAt (i) == '\\') i++;
334
335 next[0] = i + 1;
336 return line.substring (pt, i);
337 }, "~S,~A");
338 c$.getCSVString = Clazz.defineMethod (c$, "getCSVString", 
339 function (line, next) {
340 var i = next[1];
341 if (i < 0 || (i = line.indexOf ("\"", i)) < 0) return null;
342 var pt = next[0] = i;
343 var len = line.length;
344 var escaped = false;
345 var haveEscape = false;
346 while (++i < len && (line.charAt (i) != '"' || (escaped = (i + 1 < len && line.charAt (i + 1) == '"')))) if (escaped) {
347 escaped = false;
348 haveEscape = true;
349 i++;
350 }
351 if (i >= len) {
352 next[1] = -1;
353 return null;
354 }next[1] = i + 1;
355 var s = line.substring (pt + 1, i);
356 return (haveEscape ? JU.PT.rep (JU.PT.rep (s, "\"\"", "\0"), "\0", "\"") : s);
357 }, "~S,~A");
358 c$.isOneOf = Clazz.defineMethod (c$, "isOneOf", 
359 function (key, semiList) {
360 if (semiList.length == 0) return false;
361 if (semiList.charAt (0) != ';') semiList = ";" + semiList + ";";
362 return key.indexOf (";") < 0 && semiList.indexOf (';' + key + ';') >= 0;
363 }, "~S,~S");
364 c$.getQuotedAttribute = Clazz.defineMethod (c$, "getQuotedAttribute", 
365 function (info, name) {
366 var i = info.indexOf (name + "=");
367 return (i < 0 ? null : JU.PT.getQuotedStringAt (info, i));
368 }, "~S,~S");
369 c$.approx = Clazz.defineMethod (c$, "approx", 
370 function (f, n) {
371 return Math.round (f * n) / n;
372 }, "~N,~N");
373 c$.rep = Clazz.defineMethod (c$, "rep", 
374 function (str, strFrom, strTo) {
375 if (str == null || strFrom.length == 0 || str.indexOf (strFrom) < 0) return str;
376 var isOnce = (strTo.indexOf (strFrom) >= 0);
377 do {
378 str = str.$replace (strFrom, strTo);
379 } while (!isOnce && str.indexOf (strFrom) >= 0);
380 return str;
381 }, "~S,~S,~S");
382 c$.formatF = Clazz.defineMethod (c$, "formatF", 
383 function (value, width, precision, alignLeft, zeroPad) {
384 return JU.PT.formatS (JU.DF.formatDecimal (value, precision), width, 0, alignLeft, zeroPad);
385 }, "~N,~N,~N,~B,~B");
386 c$.formatD = Clazz.defineMethod (c$, "formatD", 
387 function (value, width, precision, alignLeft, zeroPad, allowOverflow) {
388 return JU.PT.formatS (JU.DF.formatDecimal (value, -1 - precision), width, 0, alignLeft, zeroPad);
389 }, "~N,~N,~N,~B,~B,~B");
390 c$.formatS = Clazz.defineMethod (c$, "formatS", 
391 function (value, width, precision, alignLeft, zeroPad) {
392 if (value == null) return "";
393 var len = value.length;
394 if (precision != 2147483647 && precision > 0 && precision < len) value = value.substring (0, precision);
395  else if (precision < 0 && len + precision >= 0) value = value.substring (len + precision + 1);
396 var padLength = width - value.length;
397 if (padLength <= 0) return value;
398 var isNeg = (zeroPad && !alignLeft && value.charAt (0) == '-');
399 var padChar = (zeroPad ? '0' : ' ');
400 var padChar0 = (isNeg ? '-' : padChar);
401 var sb =  new JU.SB ();
402 if (alignLeft) sb.append (value);
403 sb.appendC (padChar0);
404 for (var i = padLength; --i > 0; ) sb.appendC (padChar);
405
406 if (!alignLeft) sb.append (isNeg ? padChar + value.substring (1) : value);
407 return sb.toString ();
408 }, "~S,~N,~N,~B,~B");
409 c$.replaceWithCharacter = Clazz.defineMethod (c$, "replaceWithCharacter", 
410 function (str, strFrom, chTo) {
411 if (str == null) return null;
412 for (var i = strFrom.length; --i >= 0; ) str = str.$replace (strFrom.charAt (i), chTo);
413
414 return str;
415 }, "~S,~S,~S");
416 c$.replaceAllCharacters = Clazz.defineMethod (c$, "replaceAllCharacters", 
417 function (str, strFrom, strTo) {
418 for (var i = strFrom.length; --i >= 0; ) {
419 var chFrom = strFrom.substring (i, i + 1);
420 str = JU.PT.rep (str, chFrom, strTo);
421 }
422 return str;
423 }, "~S,~S,~S");
424 c$.trim = Clazz.defineMethod (c$, "trim", 
425 function (str, chars) {
426 if (chars.length == 0) return str.trim ();
427 var len = str.length;
428 var k = 0;
429 while (k < len && chars.indexOf (str.charAt (k)) >= 0) k++;
430
431 var m = str.length - 1;
432 while (m > k && chars.indexOf (str.charAt (m)) >= 0) m--;
433
434 return str.substring (k, m + 1);
435 }, "~S,~S");
436 c$.trimQuotes = Clazz.defineMethod (c$, "trimQuotes", 
437 function (value) {
438 return (value != null && value.length > 1 && value.startsWith ("\"") && value.endsWith ("\"") ? value.substring (1, value.length - 1) : value);
439 }, "~S");
440 c$.isNonStringPrimitive = Clazz.defineMethod (c$, "isNonStringPrimitive", 
441 function (info) {
442 return Clazz.instanceOf (info, Number) || Clazz.instanceOf (info, Boolean);
443 }, "~O");
444 c$.arrayGet = Clazz.defineMethod (c$, "arrayGet", 
445  function (info, i) {
446 {
447 return info[i];
448 }}, "~O,~N");
449 c$.toJSON = Clazz.defineMethod (c$, "toJSON", 
450 function (infoType, info) {
451 if (info == null) return JU.PT.packageJSON (infoType, null);
452 if (JU.PT.isNonStringPrimitive (info)) return JU.PT.packageJSON (infoType, info.toString ());
453 var s = null;
454 var sb = null;
455 while (true) {
456 if (Clazz.instanceOf (info, String)) {
457 s = info;
458 {
459 if (typeof s == "undefined") s = "null"
460 }if (s.indexOf ("{\"") != 0) {
461 s = JU.PT.rep (s, "\"", "\\\"");
462 s = JU.PT.rep (s, "\n", "\\n");
463 s = "\"" + s + "\"";
464 }break;
465 }if (Clazz.instanceOf (info, javajs.api.JSONEncodable)) {
466 if ((s = (info).toJSON ()) == null) s = "null";
467 break;
468 }sb =  new JU.SB ();
469 if (Clazz.instanceOf (info, java.util.Map)) {
470 sb.append ("{ ");
471 var sep = "";
472 for (var key, $key = (info).keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
473 sb.append (sep).append (JU.PT.packageJSON (key, JU.PT.toJSON (null, (info).get (key))));
474 sep = ",";
475 }
476 sb.append (" }");
477 break;
478 }if (Clazz.instanceOf (info, JU.Lst)) {
479 sb.append ("[ ");
480 var n = (info).size ();
481 for (var i = 0; i < n; i++) {
482 if (i > 0) sb.appendC (',');
483 sb.append (JU.PT.toJSON (null, (info).get (i)));
484 }
485 sb.append (" ]");
486 break;
487 }if (Clazz.instanceOf (info, JU.M34)) {
488 var len = (Clazz.instanceOf (info, JU.M4) ? 4 : 3);
489 var x =  Clazz.newFloatArray (len, 0);
490 var m = info;
491 sb.appendC ('[');
492 for (var i = 0; i < len; i++) {
493 if (i > 0) sb.appendC (',');
494 m.getRow (i, x);
495 sb.append (JU.PT.toJSON (null, x));
496 }
497 sb.appendC (']');
498 break;
499 }s = JU.PT.nonArrayString (info);
500 if (s == null) {
501 sb.append ("[");
502 var n = JU.AU.getLength (info);
503 for (var i = 0; i < n; i++) {
504 if (i > 0) sb.appendC (',');
505 sb.append (JU.PT.toJSON (null, JU.PT.arrayGet (info, i)));
506 }
507 sb.append ("]");
508 break;
509 }info = info.toString ();
510 }
511 return JU.PT.packageJSON (infoType, (s == null ? sb.toString () : s));
512 }, "~S,~O");
513 c$.nonArrayString = Clazz.defineMethod (c$, "nonArrayString", 
514 function (x) {
515 {
516 var s = x.toString(); return (s.startsWith("[object") &&
517 s.endsWith("Array]") ? null : s);
518 }}, "~O");
519 c$.byteArrayToJSON = Clazz.defineMethod (c$, "byteArrayToJSON", 
520 function (data) {
521 var sb =  new JU.SB ();
522 sb.append ("[");
523 var n = data.length;
524 for (var i = 0; i < n; i++) {
525 if (i > 0) sb.appendC (',');
526 sb.appendI (data[i] & 0xFF);
527 }
528 sb.append ("]");
529 return sb.toString ();
530 }, "~A");
531 c$.packageJSON = Clazz.defineMethod (c$, "packageJSON", 
532 function (infoType, info) {
533 return (infoType == null ? info : "\"" + infoType + "\": " + info);
534 }, "~S,~S");
535 c$.isAS = Clazz.defineMethod (c$, "isAS", 
536 function (x) {
537 {
538 return Clazz.isAS(x);
539 }}, "~O");
540 c$.isASS = Clazz.defineMethod (c$, "isASS", 
541 function (x) {
542 {
543 return Clazz.isASS(x);
544 }}, "~O");
545 c$.isAP = Clazz.defineMethod (c$, "isAP", 
546 function (x) {
547 {
548 return Clazz.isAP(x);
549 }}, "~O");
550 c$.isAF = Clazz.defineMethod (c$, "isAF", 
551 function (x) {
552 {
553 return Clazz.isAF(x);
554 }}, "~O");
555 c$.isAFloat = Clazz.defineMethod (c$, "isAFloat", 
556 function (x) {
557 {
558 return Clazz.isAFloat(x);
559 }}, "~O");
560 c$.isAD = Clazz.defineMethod (c$, "isAD", 
561 function (x) {
562 {
563 return Clazz.isAF(x);
564 }}, "~O");
565 c$.isADD = Clazz.defineMethod (c$, "isADD", 
566 function (x) {
567 {
568 return Clazz.isAFF(x);
569 }}, "~O");
570 c$.isAB = Clazz.defineMethod (c$, "isAB", 
571 function (x) {
572 {
573 return Clazz.isAI(x);
574 }}, "~O");
575 c$.isAI = Clazz.defineMethod (c$, "isAI", 
576 function (x) {
577 {
578 return Clazz.isAI(x);
579 }}, "~O");
580 c$.isAII = Clazz.defineMethod (c$, "isAII", 
581 function (x) {
582 {
583 return Clazz.isAII(x);
584 }}, "~O");
585 c$.isAFF = Clazz.defineMethod (c$, "isAFF", 
586 function (x) {
587 {
588 return Clazz.isAFF(x);
589 }}, "~O");
590 c$.isAFFF = Clazz.defineMethod (c$, "isAFFF", 
591 function (x) {
592 {
593 return Clazz.isAFFF(x);
594 }}, "~O");
595 c$.escapeUrl = Clazz.defineMethod (c$, "escapeUrl", 
596 function (url) {
597 url = JU.PT.rep (url, "\n", "");
598 url = JU.PT.rep (url, "%", "%25");
599 url = JU.PT.rep (url, "#", "%23");
600 url = JU.PT.rep (url, "[", "%5B");
601 url = JU.PT.rep (url, "]", "%5D");
602 url = JU.PT.rep (url, " ", "%20");
603 return url;
604 }, "~S");
605 c$.esc = Clazz.defineMethod (c$, "esc", 
606 function (str) {
607 if (str == null || str.length == 0) return "\"\"";
608 var haveEscape = false;
609 var i = 0;
610 for (; i < "\\\\\tt\rr\nn\"\"".length; i += 2) if (str.indexOf ("\\\\\tt\rr\nn\"\"".charAt (i)) >= 0) {
611 haveEscape = true;
612 break;
613 }
614 if (haveEscape) while (i < "\\\\\tt\rr\nn\"\"".length) {
615 var pt = -1;
616 var ch = "\\\\\tt\rr\nn\"\"".charAt (i++);
617 var ch2 = "\\\\\tt\rr\nn\"\"".charAt (i++);
618 var sb =  new JU.SB ();
619 var pt0 = 0;
620 while ((pt = str.indexOf (ch, pt + 1)) >= 0) {
621 sb.append (str.substring (pt0, pt)).appendC ('\\').appendC (ch2);
622 pt0 = pt + 1;
623 }
624 sb.append (str.substring (pt0, str.length));
625 str = sb.toString ();
626 }
627 return "\"" + JU.PT.escUnicode (str) + "\"";
628 }, "~S");
629 c$.escUnicode = Clazz.defineMethod (c$, "escUnicode", 
630 function (str) {
631 for (var i = str.length; --i >= 0; ) if (str.charCodeAt (i) > 0x7F) {
632 var s = "0000" + Integer.toHexString (str.charCodeAt (i));
633 str = str.substring (0, i) + "\\u" + s.substring (s.length - 4) + str.substring (i + 1);
634 }
635 return str;
636 }, "~S");
637 c$.escF = Clazz.defineMethod (c$, "escF", 
638 function (f) {
639 var sf = "" + f;
640 {
641 if (sf.indexOf(".") < 0 && sf.indexOf("e") < 0)
642 sf += ".0";
643 }return sf;
644 }, "~N");
645 c$.join = Clazz.defineMethod (c$, "join", 
646 function (s, c, i0) {
647 if (s.length < i0) return null;
648 var sb =  new JU.SB ();
649 sb.append (s[i0++]);
650 for (var i = i0; i < s.length; i++) sb.appendC (c).append (s[i]);
651
652 return sb.toString ();
653 }, "~A,~S,~N");
654 c$.isLike = Clazz.defineMethod (c$, "isLike", 
655 function (a, b) {
656 var areEqual = a.equals (b);
657 if (areEqual) return true;
658 var isStart = b.startsWith ("*");
659 var isEnd = b.endsWith ("*");
660 return (!isStart && !isEnd) ? areEqual : isStart && isEnd ? b.length == 1 || a.contains (b.substring (1, b.length - 1)) : isStart ? a.endsWith (b.substring (1)) : a.startsWith (b.substring (0, b.length - 1));
661 }, "~S,~S");
662 c$.getMapValueNoCase = Clazz.defineMethod (c$, "getMapValueNoCase", 
663 function (h, key) {
664 if ("this".equals (key)) return h;
665 var val = h.get (key);
666 if (val == null) for (var e, $e = h.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) if (e.getKey ().equalsIgnoreCase (key)) return e.getValue ();
667
668 return val;
669 }, "java.util.Map,~S");
670 c$.getMapSubset = Clazz.defineMethod (c$, "getMapSubset", 
671 function (h, key, h2) {
672 var val = h.get (key);
673 if (val != null) {
674 h2.put (key, val);
675 return;
676 }for (var e, $e = h.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
677 var k = e.getKey ();
678 if (JU.PT.isLike (k, key)) h2.put (k, e.getValue ());
679 }
680 }, "java.util.Map,~S,java.util.Map");
681 c$.clean = Clazz.defineMethod (c$, "clean", 
682 function (s) {
683 return JU.PT.rep (JU.PT.replaceAllCharacters (s, " \t\n\r", " "), "  ", " ").trim ();
684 }, "~S");
685 c$.fdup = Clazz.defineMethod (c$, "fdup", 
686 function (f, pt, n) {
687 var ch;
688 var count = 0;
689 for (var i = pt; --i >= 1; ) {
690 if (JU.PT.isDigit (ch = f.charAt (i))) continue;
691 switch (ch) {
692 case '.':
693 if (count++ != 0) return f;
694 continue;
695 case '-':
696 if (i != 1 && f.charAt (i - 1) != '.') return f;
697 continue;
698 default:
699 return f;
700 }
701 }
702 var s = f.substring (0, pt + 1);
703 var sb =  new JU.SB ();
704 for (var i = 0; i < n; i++) sb.append (s);
705
706 sb.append (f.substring (pt + 1));
707 return sb.toString ();
708 }, "~S,~N,~N");
709 c$.formatString = Clazz.defineMethod (c$, "formatString", 
710 function (strFormat, key, strT, floatT, doubleT, doOne) {
711 if (strFormat == null) return null;
712 if ("".equals (strFormat)) return "";
713 var len = key.length;
714 if (strFormat.indexOf ("%") < 0 || len == 0 || strFormat.indexOf (key) < 0) return strFormat;
715 var strLabel = "";
716 var ich;
717 var ichPercent;
718 var ichKey;
719 for (ich = 0; (ichPercent = strFormat.indexOf ('%', ich)) >= 0 && (ichKey = strFormat.indexOf (key, ichPercent + 1)) >= 0; ) {
720 if (ich != ichPercent) strLabel += strFormat.substring (ich, ichPercent);
721 ich = ichPercent + 1;
722 if (ichKey > ichPercent + 6) {
723 strLabel += '%';
724 continue;
725 }try {
726 var alignLeft = false;
727 if (strFormat.charAt (ich) == '-') {
728 alignLeft = true;
729 ++ich;
730 }var zeroPad = false;
731 if (strFormat.charAt (ich) == '0') {
732 zeroPad = true;
733 ++ich;
734 }var ch;
735 var width = 0;
736 while ((ch = strFormat.charAt (ich)) >= '0' && (ch <= '9')) {
737 width = (10 * width) + (ch.charCodeAt (0) - 48);
738 ++ich;
739 }
740 var precision = 2147483647;
741 var isExponential = false;
742 if (strFormat.charAt (ich) == '.') {
743 ++ich;
744 if ((ch = strFormat.charAt (ich)) == '-') {
745 isExponential = true;
746 ++ich;
747 }if ((ch = strFormat.charAt (ich)) >= '0' && ch <= '9') {
748 precision = ch.charCodeAt (0) - 48;
749 ++ich;
750 }if (isExponential) precision = -precision - (strT == null ? 1 : 0);
751 }var st = strFormat.substring (ich, ich + len);
752 if (!st.equals (key)) {
753 ich = ichPercent + 1;
754 strLabel += '%';
755 continue;
756 }ich += len;
757 if (!Float.isNaN (floatT)) strLabel += JU.PT.formatF (floatT, width, precision, alignLeft, zeroPad);
758  else if (strT != null) strLabel += JU.PT.formatS (strT, width, precision, alignLeft, zeroPad);
759  else if (!Double.isNaN (doubleT)) strLabel += JU.PT.formatD (doubleT, width, precision, alignLeft, zeroPad, true);
760 if (doOne) break;
761 } catch (ioobe) {
762 if (Clazz.exceptionOf (ioobe, IndexOutOfBoundsException)) {
763 ich = ichPercent;
764 break;
765 } else {
766 throw ioobe;
767 }
768 }
769 }
770 strLabel += strFormat.substring (ich);
771 return strLabel;
772 }, "~S,~S,~S,~N,~N,~B");
773 c$.formatStringS = Clazz.defineMethod (c$, "formatStringS", 
774 function (strFormat, key, strT) {
775 return JU.PT.formatString (strFormat, key, strT, NaN, NaN, false);
776 }, "~S,~S,~S");
777 c$.formatStringF = Clazz.defineMethod (c$, "formatStringF", 
778 function (strFormat, key, floatT) {
779 return JU.PT.formatString (strFormat, key, null, floatT, NaN, false);
780 }, "~S,~S,~N");
781 c$.formatStringI = Clazz.defineMethod (c$, "formatStringI", 
782 function (strFormat, key, intT) {
783 return JU.PT.formatString (strFormat, key, "" + intT, NaN, NaN, false);
784 }, "~S,~S,~N");
785 c$.sprintf = Clazz.defineMethod (c$, "sprintf", 
786 function (strFormat, list, values) {
787 if (values == null) return strFormat;
788 var n = list.length;
789 if (n == values.length) try {
790 for (var o = 0; o < n; o++) {
791 if (values[o] == null) continue;
792 switch (list.charAt (o)) {
793 case 's':
794 strFormat = JU.PT.formatString (strFormat, "s", values[o], NaN, NaN, true);
795 break;
796 case 'f':
797 strFormat = JU.PT.formatString (strFormat, "f", null, (values[o]).floatValue (), NaN, true);
798 break;
799 case 'i':
800 strFormat = JU.PT.formatString (strFormat, "d", "" + values[o], NaN, NaN, true);
801 strFormat = JU.PT.formatString (strFormat, "i", "" + values[o], NaN, NaN, true);
802 break;
803 case 'd':
804 strFormat = JU.PT.formatString (strFormat, "e", null, NaN, (values[o]).doubleValue (), true);
805 break;
806 case 'p':
807 var pVal = values[o];
808 strFormat = JU.PT.formatString (strFormat, "p", null, pVal.x, NaN, true);
809 strFormat = JU.PT.formatString (strFormat, "p", null, pVal.y, NaN, true);
810 strFormat = JU.PT.formatString (strFormat, "p", null, pVal.z, NaN, true);
811 break;
812 case 'q':
813 var qVal = values[o];
814 strFormat = JU.PT.formatString (strFormat, "q", null, qVal.x, NaN, true);
815 strFormat = JU.PT.formatString (strFormat, "q", null, qVal.y, NaN, true);
816 strFormat = JU.PT.formatString (strFormat, "q", null, qVal.z, NaN, true);
817 strFormat = JU.PT.formatString (strFormat, "q", null, qVal.w, NaN, true);
818 break;
819 case 'S':
820 var sVal = values[o];
821 for (var i = 0; i < sVal.length; i++) strFormat = JU.PT.formatString (strFormat, "s", sVal[i], NaN, NaN, true);
822
823 break;
824 case 'F':
825 var fVal = values[o];
826 for (var i = 0; i < fVal.length; i++) strFormat = JU.PT.formatString (strFormat, "f", null, fVal[i], NaN, true);
827
828 break;
829 case 'I':
830 var iVal = values[o];
831 for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString (strFormat, "d", "" + iVal[i], NaN, NaN, true);
832
833 for (var i = 0; i < iVal.length; i++) strFormat = JU.PT.formatString (strFormat, "i", "" + iVal[i], NaN, NaN, true);
834
835 break;
836 case 'D':
837 var dVal = values[o];
838 for (var i = 0; i < dVal.length; i++) strFormat = JU.PT.formatString (strFormat, "e", null, NaN, dVal[i], true);
839
840 }
841 }
842 return JU.PT.rep (strFormat, "%%", "%");
843 } catch (e) {
844 if (Clazz.exceptionOf (e, Exception)) {
845 } else {
846 throw e;
847 }
848 }
849 System.out.println ("TextFormat.sprintf error " + list + " " + strFormat);
850 return JU.PT.rep (strFormat, "%", "?");
851 }, "~S,~S,~A");
852 c$.formatCheck = Clazz.defineMethod (c$, "formatCheck", 
853 function (strFormat) {
854 if (strFormat == null || strFormat.indexOf ('p') < 0 && strFormat.indexOf ('q') < 0) return strFormat;
855 strFormat = JU.PT.rep (strFormat, "%%", "\1");
856 strFormat = JU.PT.rep (strFormat, "%p", "%6.2p");
857 strFormat = JU.PT.rep (strFormat, "%q", "%6.2q");
858 var format = JU.PT.split (strFormat, "%");
859 var sb =  new JU.SB ();
860 sb.append (format[0]);
861 for (var i = 1; i < format.length; i++) {
862 var f = "%" + format[i];
863 var pt;
864 if (f.length >= 3) {
865 if ((pt = f.indexOf ('p')) >= 0) f = JU.PT.fdup (f, pt, 3);
866 if ((pt = f.indexOf ('q')) >= 0) f = JU.PT.fdup (f, pt, 4);
867 }sb.append (f);
868 }
869 return sb.toString ().$replace ('\1', '%');
870 }, "~S");
871 c$.leftJustify = Clazz.defineMethod (c$, "leftJustify", 
872 function (s, s1, s2) {
873 s.append (s2);
874 var n = s1.length - s2.length;
875 if (n > 0) s.append (s1.substring (0, n));
876 }, "JU.SB,~S,~S");
877 c$.rightJustify = Clazz.defineMethod (c$, "rightJustify", 
878 function (s, s1, s2) {
879 var n = s1.length - s2.length;
880 if (n > 0) s.append (s1.substring (0, n));
881 s.append (s2);
882 }, "JU.SB,~S,~S");
883 c$.safeTruncate = Clazz.defineMethod (c$, "safeTruncate", 
884 function (f, n) {
885 if (f > -0.001 && f < 0.001) f = 0;
886 return (f + "         ").substring (0, n);
887 }, "~N,~N");
888 c$.isWild = Clazz.defineMethod (c$, "isWild", 
889 function (s) {
890 return s != null && (s.indexOf ("*") >= 0 || s.indexOf ("?") >= 0);
891 }, "~S");
892 c$.isMatch = Clazz.defineMethod (c$, "isMatch", 
893 function (search, match, checkStar, allowInitialStar) {
894 if (search.equals (match)) return true;
895 var mLen = match.length;
896 if (mLen == 0) return false;
897 var isStar0 = (checkStar && allowInitialStar ? match.charAt (0) == '*' : false);
898 if (mLen == 1 && isStar0) return true;
899 var isStar1 = (checkStar && match.endsWith ("*"));
900 var haveQ = (match.indexOf ('?') >= 0);
901 if (!haveQ) {
902 if (isStar0) return (isStar1 ? (mLen < 3 || search.indexOf (match.substring (1, mLen - 1)) >= 0) : search.endsWith (match.substring (1)));
903  else if (isStar1) return search.startsWith (match.substring (0, mLen - 1));
904 }var sLen = search.length;
905 var qqqq = "????";
906 var nq = 4;
907 while (nq < sLen) {
908 qqqq += qqqq;
909 nq += 4;
910 }
911 if (checkStar) {
912 if (isStar0) {
913 match = qqqq + match.substring (1);
914 mLen += nq - 1;
915 }if (isStar1) {
916 match = match.substring (0, mLen - 1) + qqqq;
917 mLen += nq - 1;
918 }}if (mLen < sLen) return false;
919 var ich = 0;
920 while (mLen > sLen) {
921 if (allowInitialStar && match.charAt (ich) == '?') {
922 ++ich;
923 } else if (match.charAt (ich + mLen - 1) != '?') {
924 return false;
925 }--mLen;
926 }
927 for (var i = sLen; --i >= 0; ) {
928 var chm = match.charAt (ich + i);
929 if (chm == '?') continue;
930 var chs = search.charAt (i);
931 if (chm != chs && (chm != '\1' || chs != '?')) return false;
932 }
933 return true;
934 }, "~S,~S,~B,~B");
935 c$.replaceQuotedStrings = Clazz.defineMethod (c$, "replaceQuotedStrings", 
936 function (s, list, newList) {
937 var n = list.size ();
938 for (var i = 0; i < n; i++) {
939 var name = list.get (i);
940 var newName = newList.get (i);
941 if (!newName.equals (name)) s = JU.PT.rep (s, "\"" + name + "\"", "\"" + newName + "\"");
942 }
943 return s;
944 }, "~S,JU.Lst,JU.Lst");
945 c$.replaceStrings = Clazz.defineMethod (c$, "replaceStrings", 
946 function (s, list, newList) {
947 var n = list.size ();
948 for (var i = 0; i < n; i++) {
949 var name = list.get (i);
950 var newName = newList.get (i);
951 if (!newName.equals (name)) s = JU.PT.rep (s, name, newName);
952 }
953 return s;
954 }, "~S,JU.Lst,JU.Lst");
955 c$.isDigit = Clazz.defineMethod (c$, "isDigit", 
956 function (ch) {
957 var c = (ch).charCodeAt (0);
958 return (48 <= c && c <= 57);
959 }, "~S");
960 c$.isUpperCase = Clazz.defineMethod (c$, "isUpperCase", 
961 function (ch) {
962 var c = (ch).charCodeAt (0);
963 return (65 <= c && c <= 90);
964 }, "~S");
965 c$.isLowerCase = Clazz.defineMethod (c$, "isLowerCase", 
966 function (ch) {
967 var c = (ch).charCodeAt (0);
968 return (97 <= c && c <= 122);
969 }, "~S");
970 c$.isLetter = Clazz.defineMethod (c$, "isLetter", 
971 function (ch) {
972 var c = (ch).charCodeAt (0);
973 return (65 <= c && c <= 90 || 97 <= c && c <= 122);
974 }, "~S");
975 c$.isLetterOrDigit = Clazz.defineMethod (c$, "isLetterOrDigit", 
976 function (ch) {
977 var c = (ch).charCodeAt (0);
978 return (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57);
979 }, "~S");
980 c$.isWhitespace = Clazz.defineMethod (c$, "isWhitespace", 
981 function (ch) {
982 var c = (ch).charCodeAt (0);
983 return (c >= 0x1c && c <= 0x20 || c >= 0x9 && c <= 0xd);
984 }, "~S");
985 c$.fixPtFloats = Clazz.defineMethod (c$, "fixPtFloats", 
986 function (pt, f) {
987 pt.x = Math.round (pt.x * f) / f;
988 pt.y = Math.round (pt.y * f) / f;
989 pt.z = Math.round (pt.z * f) / f;
990 }, "JU.T3,~N");
991 c$.fixDouble = Clazz.defineMethod (c$, "fixDouble", 
992 function (d, f) {
993 return Math.round (d * f) / f;
994 }, "~N,~N");
995 c$.parseFloatFraction = Clazz.defineMethod (c$, "parseFloatFraction", 
996 function (s) {
997 var pt = s.indexOf ("/");
998 return (pt < 0 ? JU.PT.parseFloat (s) : JU.PT.parseFloat (s.substring (0, pt)) / JU.PT.parseFloat (s.substring (pt + 1)));
999 }, "~S");
1000 Clazz.defineStatics (c$,
1001 "tensScale",  Clazz.newFloatArray (-1, [10, 100, 1000, 10000, 100000, 1000000]),
1002 "decimalScale",  Clazz.newFloatArray (-1, [0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001, 0.0000001, 0.00000001, 0.000000001]),
1003 "FLOAT_MIN_SAFE", 2E-45,
1004 "escapable", "\\\\\tt\rr\nn\"\"",
1005 "FRACTIONAL_PRECISION", 100000,
1006 "CARTESIAN_PRECISION", 10000);
1007 });