JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / util / StringUtils.js
1 Clazz.declarePackage ("jalview.util");\r
2 Clazz.load (["java.util.regex.Pattern"], "jalview.util.StringUtils", ["java.lang.StringBuffer", "java.util.ArrayList"], function () {\r
3 c$ = Clazz.declareType (jalview.util, "StringUtils");\r
4 c$.insertCharAt = Clazz.defineMethod (c$, "insertCharAt", \r
5 function ($in, position, count, ch) {\r
6 var tmp =  Clazz.newCharArray ($in.length + count, '\0');\r
7 if (position >= $in.length) {\r
8 System.arraycopy ($in, 0, tmp, 0, $in.length);\r
9 position = $in.length;\r
10 } else {\r
11 System.arraycopy ($in, 0, tmp, 0, position);\r
12 }var index = position;\r
13 while (count > 0) {\r
14 tmp[index++] = ch;\r
15 count--;\r
16 }\r
17 if (position < $in.length) {\r
18 System.arraycopy ($in, position, tmp, index, $in.length - position);\r
19 }return tmp;\r
20 }, "~A,~N,~N,~S");\r
21 c$.deleteChars = Clazz.defineMethod (c$, "deleteChars", \r
22 function ($in, from, to) {\r
23 if (from >= $in.length || from < 0) {\r
24 return $in;\r
25 }var tmp;\r
26 if (to >= $in.length) {\r
27 tmp =  Clazz.newCharArray (from, '\0');\r
28 System.arraycopy ($in, 0, tmp, 0, from);\r
29 to = $in.length;\r
30 } else {\r
31 tmp =  Clazz.newCharArray ($in.length - to + from, '\0');\r
32 System.arraycopy ($in, 0, tmp, 0, from);\r
33 System.arraycopy ($in, to, tmp, from, $in.length - to);\r
34 }return tmp;\r
35 }, "~A,~N,~N");\r
36 c$.getLastToken = Clazz.defineMethod (c$, "getLastToken", \r
37 function (input, token) {\r
38 if (input == null) {\r
39 return null;\r
40 }if (token == null) {\r
41 return input;\r
42 }var st = input.$plit (token);\r
43 return st[st.length - 1];\r
44 }, "~S,~S");\r
45 c$.separatorListToArray = Clazz.defineMethod (c$, "separatorListToArray", \r
46 function (input, delimiter) {\r
47 var seplen = delimiter.length;\r
48 if (input == null || input.equals ("") || input.equals (delimiter)) {\r
49 return null;\r
50 }var jv =  new java.util.ArrayList ();\r
51 var cp = 0;\r
52 var pos;\r
53 var escape;\r
54 var wasescaped = false;\r
55 var wasquoted = false;\r
56 var lstitem = null;\r
57 while ((pos = input.indexOf (delimiter, cp)) >= cp) {\r
58 escape = (pos > 0 && input.charAt (pos - 1) == '\\') ? -1 : 0;\r
59 if (wasescaped || wasquoted) {\r
60 jv.set (jv.size () - 1, lstitem = lstitem + delimiter + input.substring (cp, pos + escape));\r
61 } else {\r
62 jv.add (lstitem = input.substring (cp, pos + escape));\r
63 }cp = pos + seplen;\r
64 wasescaped = escape == -1;\r
65 wasquoted = jalview.util.StringUtils.DELIMITERS_PATTERN.matcher (lstitem).matches ();\r
66 }\r
67 if (cp < input.length) {\r
68 var c = input.substring (cp);\r
69 if (wasescaped || wasquoted) {\r
70 jv.set (jv.size () - 1, lstitem + delimiter + c);\r
71 } else {\r
72 if (!c.equals (delimiter)) {\r
73 jv.add (c);\r
74 }}}if (jv.size () > 0) {\r
75 var v = jv.toArray ( new Array (jv.size ()));\r
76 jv.clear ();\r
77 if (false) {\r
78 System.err.println ("Array from '" + delimiter + "' separated List:\n" + v.length);\r
79 for (var i = 0; i < v.length; i++) {\r
80 System.err.println ("item " + i + " '" + v[i] + "'");\r
81 }\r
82 }return v;\r
83 }if (false) {\r
84 System.err.println ("Empty Array from '" + delimiter + "' separated List");\r
85 }return null;\r
86 }, "~S,~S");\r
87 c$.arrayToSeparatorList = Clazz.defineMethod (c$, "arrayToSeparatorList", \r
88 function (list, separator) {\r
89 var v =  new StringBuffer ();\r
90 if (list != null && list.length > 0) {\r
91 for (var i = 0, iSize = list.length; i < iSize; i++) {\r
92 if (list[i] != null) {\r
93 if (v.length () > 0) {\r
94 v.append (separator);\r
95 }v.append (list[i]);\r
96 }}\r
97 if (false) {\r
98 System.err.println ("Returning '" + separator + "' separated List:\n");\r
99 System.err.println (v);\r
100 }return v.toString ();\r
101 }if (false) {\r
102 System.err.println ("Returning empty '" + separator + "' separated List\n");\r
103 }return "" + separator;\r
104 }, "~A,~S");\r
105 c$.DELIMITERS_PATTERN = c$.prototype.DELIMITERS_PATTERN = java.util.regex.Pattern.compile (".*='[^']*(?!')");\r
106 Clazz.defineStatics (c$,\r
107 "DEBUG", false);\r
108 });\r