1 Clazz.declarePackage ("com.stevesoft.pat");
2 Clazz.load (null, "com.stevesoft.pat.parsePerl", ["com.stevesoft.pat.CaseMgr", "$.Prop", "$.RegSyntaxError", "$.Regex", "$.ReplaceRule", "$.StringRule", "java.lang.StringBuffer"], function () {
3 c$ = Clazz.declareType (com.stevesoft.pat, "parsePerl");
4 c$.close = Clazz.defineMethod (c$, "close",
16 c$.codify = Clazz.defineMethod (c$, "codify",
17 function (s, keepbs) {
18 return com.stevesoft.pat.parsePerl.codifyRange (s, 0, s.length, keepbs);
20 c$.codifyRange = Clazz.defineMethod (c$, "codifyRange",
21 function (s, i0, iN, keepbs) {
22 var sb = new StringBuffer ();
29 for (var i = i0; i < iN; i++) {
37 var c2 = s.charAt (i);
55 uc1 = lc1 = ucmode = lcmode = litmode = false;
66 modified = new Boolean (modified | mf).valueOf ();
69 c = com.stevesoft.pat.parsePerl.lc (c);
72 c = com.stevesoft.pat.parsePerl.uc (c);
75 c = com.stevesoft.pat.parsePerl.uc (c);
77 c = com.stevesoft.pat.parsePerl.lc (c);
78 }if (litmode && com.stevesoft.pat.parsePerl.needbs (c)) {
82 return modified ? sb.toString () : s;
84 c$.uc = Clazz.defineMethod (c$, "uc",
86 return com.stevesoft.pat.CaseMgr.toUpperCaseC (c);
88 c$.lc = Clazz.defineMethod (c$, "lc",
90 return com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
92 c$.needbs = Clazz.defineMethod (c$, "needbs",
94 if (c >= 'a' && c <= 'z') {
96 }if (c >= 'A' && c <= 'Z') {
98 }if (c >= '0' && c <= '9') {
104 c$.parse = Clazz.defineMethod (c$, "parse",
112 var s1 = new StringBuffer ();
113 var s2 = new StringBuffer ();
119 if (s.length >= 3 && s.charAt (0) == 's') {
121 delim = s.charAt (1);
122 cdelim = com.stevesoft.pat.parsePerl.close (delim);
124 } else if (s.length >= 2 && s.charAt (0) == 'm') {
126 delim = s.charAt (1);
127 cdelim = com.stevesoft.pat.parsePerl.close (delim);
129 } else if (s.length >= 1 && s.charAt (0) == '/') {
134 com.stevesoft.pat.RegSyntaxError.endItAll ("Regex.perlCode should be of the form s/// or m// or //");
136 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
142 }for (; i < s.length; i++) {
143 if (s.charAt (i) == '\\') {
146 } else if (s.charAt (i) == cdelim && count == 0) {
149 } else if (s.charAt (i) == delim && cdelim != delim) {
151 } else if (s.charAt (i) == cdelim && cdelim != delim) {
153 }s1.append (s.charAt (i));
155 if (mode == 's' && cdelim != delim) {
156 while (i < s.length && com.stevesoft.pat.Prop.isWhite (s.charAt (i))) {
161 com.stevesoft.pat.RegSyntaxError.endItAll ("" + mode + delim + " needs " + cdelim);
163 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
169 }cdelim = com.stevesoft.pat.parsePerl.close (delim = s.charAt (i));
173 for (; i < s.length; i++) {
174 if (s.charAt (i) == '\\') {
177 } else if (s.charAt (i) == cdelim && count == 0) {
180 } else if (s.charAt (i) == delim && cdelim != delim) {
182 } else if (s.charAt (i) == cdelim && cdelim != delim) {
184 }s2.append (s.charAt (i));
186 }for (; i < s.length; i++) {
187 var c = s.charAt (i);
209 com.stevesoft.pat.RegSyntaxError.endItAll ("Illegal flag to pattern: " + c);
211 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
219 var r = new com.stevesoft.pat.Regex (null, "");
221 var pat = s1.toString ();
222 var reprul = s2.toString ();
224 pat = com.stevesoft.pat.parsePerl.strip (pat);
225 reprul = com.stevesoft.pat.parsePerl.strip (reprul);
227 r.ignoreCase = new Boolean (r.ignoreCase | igncase).valueOf ();
228 r.gFlag = new Boolean (r.gFlag | gFlag).valueOf ();
229 r.sFlag = new Boolean (r.sFlag | sFlag).valueOf ();
230 r.mFlag = new Boolean (r.mFlag | mFlag).valueOf ();
233 }if (delim == '\'') {
234 r.setReplaceRule ( new com.stevesoft.pat.StringRule (reprul));
236 r.setReplaceRule (com.stevesoft.pat.ReplaceRule.perlCode (reprul));
238 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
246 c$.strip = Clazz.defineMethod (c$, "strip",
248 var sb = new StringBuffer ();
249 for (var i = 0; i < s.length; i++) {
250 var c = s.charAt (i);
251 if (com.stevesoft.pat.Prop.isWhite (c)) {
252 ;} else if (c == '#') {
254 while (i < s.length) {
255 if (s.charAt (i) == '\n') {
259 } else if (c == '\\') {
261 sb.append (s.charAt (++i));
265 return sb.toString ();