JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / com / stevesoft / pat / RegOpt.js
1 Clazz.declarePackage ("com.stevesoft.pat");
2 Clazz.load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {
3 c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
4 Clazz.overrideMethod (c$, "matchInternal", 
5 function (p, pt) {
6 return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
7 }, "~N,com.stevesoft.pat.Pthings");
8 Clazz.overrideMethod (c$, "clone1", 
9 function (h) {
10 return  new com.stevesoft.pat.FastChar (this.c);
11 }, "java.util.Hashtable");
12 c$ = Clazz.decorateAsClass (function () {
13 this.h = null;
14 this.keys = null;
15 Clazz.instantialize (this, arguments);
16 }, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
17 Clazz.prepareFields (c$, function () {
18 this.h =  new java.util.Hashtable ();
19 this.keys =  new java.util.Vector ();
20 });
21 Clazz.makeConstructor (c$, 
22 function () {
23 Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
24 });
25 Clazz.overrideMethod (c$, "clone1", 
26 function (x) {
27 var b =  new com.stevesoft.pat.Branch ();
28 b.keys = this.keys.clone ();
29 x.put (this, b);
30 x.put (b, b);
31 for (var i = 0; i < this.keys.size (); i++) {
32 var p = this.h.get (this.keys.elementAt (i));
33 b.h.put (this.keys.elementAt (i), p.clone (x));
34 }
35 return b;
36 }, "java.util.Hashtable");
37 Clazz.defineMethod (c$, "reduce", 
38 function (ignoreCase, dontMinQ) {
39 if (this.h.size () == 1) {
40 var e = this.h.keys ();
41 var c = e.nextElement ();
42 var oc;
43 if (ignoreCase || dontMinQ) {
44 oc =  new com.stevesoft.pat.oneChar (c.charValue ());
45 } else {
46 oc =  new com.stevesoft.pat.FastChar (c.charValue ());
47 }oc.next = this.h.get (c);
48 oc.add (this.next);
49 return oc;
50 } else if (this.h.size () == 0) {
51 return null;
52 }return this;
53 }, "~B,~B");
54 Clazz.defineMethod (c$, "maxChars", 
55 function () {
56 var e = this.h.keys ();
57 var count =  new com.stevesoft.pat.patInt (0);
58 while (e.hasMoreElements ()) {
59 var key = e.nextElement ();
60 var pa = this.h.get (key);
61 var pi = pa.maxChars ();
62 pi.inc ();
63 count.maxeq (pi);
64 }
65 return count;
66 });
67 Clazz.defineMethod (c$, "minChars", 
68 function () {
69 var e = this.h.keys ();
70 var count =  new com.stevesoft.pat.patInt (0);
71 while (e.hasMoreElements ()) {
72 var key = e.nextElement ();
73 var pa = this.h.get (key);
74 var pi = pa.minChars ();
75 pi.inc ();
76 count.mineq (pi);
77 }
78 return count;
79 });
80 Clazz.defineMethod (c$, "addc", 
81 function (o, ignoreCase, dontMinQ) {
82 var n = o.next;
83 if (n == null) {
84 n =  new com.stevesoft.pat.NullPattern ();
85 } else {
86 n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
87 }n.setParent (this);
88 this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
89 if (ignoreCase) {
90 if (o.c != o.altc) {
91 this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
92 }if (o.c != o.altc2 && o.altc != o.altc2) {
93 this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
94 }}}, "com.stevesoft.pat.oneChar,~B,~B");
95 Clazz.defineMethod (c$, "set", 
96 function (c, n, igc, dontMinQ) {
97 var p = this.h.get (c);
98 this.next = null;
99 if (p == null) {
100 if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
101 var np =  new com.stevesoft.pat.NullPattern ();
102 np.add (n);
103 this.h.put (c, np);
104 } else {
105 this.h.put (c, n);
106 }this.keys.addElement (c);
107 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
108 (p).addOr (n);
109 } else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
110 var b =  new com.stevesoft.pat.Branch ();
111 b.addc (p, igc, dontMinQ);
112 b.addc (n, igc, dontMinQ);
113 this.h.put (c, b);
114 b.setParent (this);
115 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
116 (p).addc (n, igc, dontMinQ);
117 n.setParent (p);
118 } else {
119 var o =  new com.stevesoft.pat.Or ();
120 o.setParent (this);
121 if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
122 o.addOr (p.next);
123 } else {
124 o.addOr (p);
125 }o.addOr (n);
126 var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
127 this.h.put (c, optpat);
128 optpat.setParent (this);
129 }}, "Character,com.stevesoft.pat.Pattern,~B,~B");
130 Clazz.overrideMethod (c$, "toString", 
131 function () {
132 var sb =  new StringBuffer ();
133 sb.append ("(?:(?#branch)");
134 for (var i = 0; i < this.keys.size (); i++) {
135 var c = this.keys.elementAt (i);
136 sb.append (c);
137 sb.append (this.h.get (c));
138 if (i + 1 < this.keys.size ()) {
139 sb.append ("|");
140 }}
141 sb.append (")");
142 sb.append (this.nextString ());
143 return sb.toString ();
144 });
145 Clazz.defineMethod (c$, "matchInternal", 
146 function (pos, pt) {
147 if (pos >= pt.src.length ()) {
148 return -1;
149 }var n = this.h.get ( new Character (pt.src.charAt (pos)));
150 if (n == null) {
151 return -1;
152 }if (pt.cbits != null && pt.cbits.get (pos)) {
153 return -1;
154 }return n.matchInternal (pos + 1, pt);
155 }, "~N,com.stevesoft.pat.Pthings");
156 c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");
157 c$.opt = Clazz.defineMethod (c$, "opt", 
158 function (p, ignoreCase, dontMinQ) {
159 if (p == null) {
160 return p;
161 }if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
162 var b = p;
163 p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
164 p.next = b.next;
165 p.parent = b.parent;
166 } else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
167 var o = p;
168 p =  new com.stevesoft.pat.FastChar (o.c);
169 p.next = o.next;
170 p.parent = o.parent;
171 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
172 var o = p;
173 p = o.v.elementAt (0);
174 p.setParent (null);
175 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
176 p.add (o.next);
177 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
178 var o = p;
179 o.pv = null;
180 var v = o.v;
181 o.v =  new java.util.Vector ();
182 var b =  new com.stevesoft.pat.Branch ();
183 b.parent = o.parent;
184 for (var i = 0; i < v.size (); i++) {
185 var pp = v.elementAt (i);
186 if (Clazz.instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz.instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {
187 b.addc (pp, ignoreCase, dontMinQ);
188 } else {
189 if (b.keys.size () > 0) {
190 var p2 = b.reduce (ignoreCase, dontMinQ);
191 if (p2 != null) {
192 o.addOr (p2);
193 b =  new com.stevesoft.pat.Branch ();
194 b.parent = o.parent;
195 }}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
196 }}
197 if (b.keys.size () > 0) {
198 var p2 = b.reduce (ignoreCase, dontMinQ);
199 if (p2 != null) {
200 o.addOr (p2);
201 }}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
202 p = o.v.elementAt (0);
203 p.setParent (null);
204 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
205 p.add (o.next);
206 }} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
207 var ps = p;
208 ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
209 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
210 var m = p;
211 var fm = null;
212 try {
213 fm =  new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
214 } catch (rs) {
215 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
216 } else {
217 throw rs;
218 }
219 }
220 fm.parent = m.parent;
221 fm.matchFewest = m.matchFewest;
222 fm.next = m.next;
223 p = fm;
224 }if (p.next != null) {
225 p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
226 }return p;
227 }, "com.stevesoft.pat.Pattern,~B,~B");
228 c$.safe4fm = Clazz.defineMethod (c$, "safe4fm", 
229 function (x) {
230 while (x != null) {
231 if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {
232 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {
233 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
234 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {
235 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
236 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {
237 var o = x;
238 if (!o.leftForm ().equals ("(?:")) {
239 return false;
240 }var lo = o.countMinChars ();
241 var hi = o.countMaxChars ();
242 if (!lo.equals (hi)) {
243 return false;
244 }for (var i = 0; i < o.v.size (); i++) {
245 if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
246 return false;
247 }}
248 } else {
249 return false;
250 }x = x.next;
251 }
252 return true;
253 }, "com.stevesoft.pat.Pattern");
254 });