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",
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",
10 return new com.stevesoft.pat.FastChar (this.c);
11 }, "java.util.Hashtable");
12 c$ = Clazz.decorateAsClass (function () {
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 ();
21 Clazz.makeConstructor (c$,
23 Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
25 Clazz.overrideMethod (c$, "clone1",
27 var b = new com.stevesoft.pat.Branch ();
28 b.keys = this.keys.clone ();
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));
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 ();
43 if (ignoreCase || dontMinQ) {
44 oc = new com.stevesoft.pat.oneChar (c.charValue ());
46 oc = new com.stevesoft.pat.FastChar (c.charValue ());
47 }oc.next = this.h.get (c);
50 } else if (this.h.size () == 0) {
54 Clazz.defineMethod (c$, "maxChars",
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 ();
67 Clazz.defineMethod (c$, "minChars",
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 ();
80 Clazz.defineMethod (c$, "addc",
81 function (o, ignoreCase, dontMinQ) {
84 n = new com.stevesoft.pat.NullPattern ();
86 n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
88 this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
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);
100 if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
101 var np = new com.stevesoft.pat.NullPattern ();
106 }this.keys.addElement (c);
107 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
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);
115 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
116 (p).addc (n, igc, dontMinQ);
119 var o = new com.stevesoft.pat.Or ();
121 if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
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",
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);
137 sb.append (this.h.get (c));
138 if (i + 1 < this.keys.size ()) {
142 sb.append (this.nextString ());
143 return sb.toString ();
145 Clazz.defineMethod (c$, "matchInternal",
147 if (pos >= pt.src.length ()) {
149 }var n = this.h.get ( new Character (pt.src.charAt (pos)));
152 }if (pt.cbits != null && pt.cbits.get (pos)) {
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) {
161 }if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
163 p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
166 } else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
168 p = new com.stevesoft.pat.FastChar (o.c);
171 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
173 p = o.v.elementAt (0);
175 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
177 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
181 o.v = new java.util.Vector ();
182 var b = new com.stevesoft.pat.Branch ();
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);
189 if (b.keys.size () > 0) {
190 var p2 = b.reduce (ignoreCase, dontMinQ);
193 b = new com.stevesoft.pat.Branch ();
195 }}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
197 if (b.keys.size () > 0) {
198 var p2 = b.reduce (ignoreCase, dontMinQ);
201 }}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
202 p = o.v.elementAt (0);
204 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
206 }} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
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)) {
213 fm = new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
215 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
220 fm.parent = m.parent;
221 fm.matchFewest = m.matchFewest;
224 }if (p.next != null) {
225 p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
227 }, "com.stevesoft.pat.Pattern,~B,~B");
228 c$.safe4fm = Clazz.defineMethod (c$, "safe4fm",
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)) {
238 if (!o.leftForm ().equals ("(?:")) {
240 }var lo = o.countMinChars ();
241 var hi = o.countMaxChars ();
242 if (!lo.equals (hi)) {
244 }for (var i = 0; i < o.v.size (); i++) {
245 if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
253 }, "com.stevesoft.pat.Pattern");