1 Clazz.declarePackage ("com.stevesoft.pat");
\r
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 () {
\r
3 c$ = Clazz.declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
\r
4 Clazz.overrideMethod (c$, "matchInternal",
\r
6 return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
\r
7 }, "~N,com.stevesoft.pat.Pthings");
\r
8 Clazz.overrideMethod (c$, "clone1",
\r
10 return new com.stevesoft.pat.FastChar (this.c);
\r
11 }, "java.util.Hashtable");
\r
12 c$ = Clazz.decorateAsClass (function () {
\r
15 Clazz.instantialize (this, arguments);
\r
16 }, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
\r
17 Clazz.prepareFields (c$, function () {
\r
18 this.h = new java.util.Hashtable ();
\r
19 this.keys = new java.util.Vector ();
\r
21 Clazz.makeConstructor (c$,
\r
23 Clazz.superConstructor (this, com.stevesoft.pat.Branch, []);
\r
25 Clazz.overrideMethod (c$, "clone1",
\r
27 var b = new com.stevesoft.pat.Branch ();
\r
28 b.keys = this.keys.clone ();
\r
31 for (var i = 0; i < this.keys.size (); i++) {
\r
32 var p = this.h.get (this.keys.elementAt (i));
\r
33 b.h.put (this.keys.elementAt (i), p.clone (x));
\r
36 }, "java.util.Hashtable");
\r
37 Clazz.defineMethod (c$, "reduce",
\r
38 function (ignoreCase, dontMinQ) {
\r
39 if (this.h.size () == 1) {
\r
40 var e = this.h.keys ();
\r
41 var c = e.nextElement ();
\r
43 if (ignoreCase || dontMinQ) {
\r
44 oc = new com.stevesoft.pat.oneChar (c.charValue ());
\r
46 oc = new com.stevesoft.pat.FastChar (c.charValue ());
\r
47 }oc.next = this.h.get (c);
\r
50 } else if (this.h.size () == 0) {
\r
54 Clazz.defineMethod (c$, "maxChars",
\r
56 var e = this.h.keys ();
\r
57 var count = new com.stevesoft.pat.patInt (0);
\r
58 while (e.hasMoreElements ()) {
\r
59 var key = e.nextElement ();
\r
60 var pa = this.h.get (key);
\r
61 var pi = pa.maxChars ();
\r
67 Clazz.defineMethod (c$, "minChars",
\r
69 var e = this.h.keys ();
\r
70 var count = new com.stevesoft.pat.patInt (0);
\r
71 while (e.hasMoreElements ()) {
\r
72 var key = e.nextElement ();
\r
73 var pa = this.h.get (key);
\r
74 var pi = pa.minChars ();
\r
80 Clazz.defineMethod (c$, "addc",
\r
81 function (o, ignoreCase, dontMinQ) {
\r
84 n = new com.stevesoft.pat.NullPattern ();
\r
86 n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
\r
87 }n.setParent (this);
\r
88 this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
\r
90 if (o.c != o.altc) {
\r
91 this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
\r
92 }if (o.c != o.altc2 && o.altc != o.altc2) {
\r
93 this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
\r
94 }}}, "com.stevesoft.pat.oneChar,~B,~B");
\r
95 Clazz.defineMethod (c$, "set",
\r
96 function (c, n, igc, dontMinQ) {
\r
97 var p = this.h.get (c);
\r
100 if (Clazz.instanceOf (n, com.stevesoft.pat.Or)) {
\r
101 var np = new com.stevesoft.pat.NullPattern ();
\r
103 this.h.put (c, np);
\r
106 }this.keys.addElement (c);
\r
107 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
\r
109 } else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
\r
110 var b = new com.stevesoft.pat.Branch ();
\r
111 b.addc (p, igc, dontMinQ);
\r
112 b.addc (n, igc, dontMinQ);
\r
114 b.setParent (this);
\r
115 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Branch) && Clazz.instanceOf (n, com.stevesoft.pat.oneChar)) {
\r
116 (p).addc (n, igc, dontMinQ);
\r
119 var o = new com.stevesoft.pat.Or ();
\r
120 o.setParent (this);
\r
121 if (Clazz.instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
\r
126 var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
\r
127 this.h.put (c, optpat);
\r
128 optpat.setParent (this);
\r
129 }}, "Character,com.stevesoft.pat.Pattern,~B,~B");
\r
130 Clazz.overrideMethod (c$, "toString",
\r
132 var sb = new StringBuffer ();
\r
133 sb.append ("(?:(?#branch)");
\r
134 for (var i = 0; i < this.keys.size (); i++) {
\r
135 var c = this.keys.elementAt (i);
\r
137 sb.append (this.h.get (c));
\r
138 if (i + 1 < this.keys.size ()) {
\r
142 sb.append (this.nextString ());
\r
143 return sb.toString ();
\r
145 Clazz.defineMethod (c$, "matchInternal",
\r
146 function (pos, pt) {
\r
147 if (pos >= pt.src.length ()) {
\r
149 }var n = this.h.get ( new Character (pt.src.charAt (pos)));
\r
152 }if (pt.cbits != null && pt.cbits.get (pos)) {
\r
154 }return n.matchInternal (pos + 1, pt);
\r
155 }, "~N,com.stevesoft.pat.Pthings");
\r
156 c$ = Clazz.declareType (com.stevesoft.pat, "RegOpt");
\r
157 c$.opt = Clazz.defineMethod (c$, "opt",
\r
158 function (p, ignoreCase, dontMinQ) {
\r
161 }if (Clazz.instanceOf (p, com.stevesoft.pat.Bracket)) {
\r
163 p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
\r
165 p.parent = b.parent;
\r
166 } else if (Clazz.instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
\r
168 p = new com.stevesoft.pat.FastChar (o.c);
\r
170 p.parent = o.parent;
\r
171 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
\r
173 p = o.v.elementAt (0);
\r
174 p.setParent (null);
\r
175 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
\r
177 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Or)) {
\r
181 o.v = new java.util.Vector ();
\r
182 var b = new com.stevesoft.pat.Branch ();
\r
183 b.parent = o.parent;
\r
184 for (var i = 0; i < v.size (); i++) {
\r
185 var pp = v.elementAt (i);
\r
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)))) {
\r
187 b.addc (pp, ignoreCase, dontMinQ);
\r
189 if (b.keys.size () > 0) {
\r
190 var p2 = b.reduce (ignoreCase, dontMinQ);
\r
193 b = new com.stevesoft.pat.Branch ();
\r
194 b.parent = o.parent;
\r
195 }}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
\r
197 if (b.keys.size () > 0) {
\r
198 var p2 = b.reduce (ignoreCase, dontMinQ);
\r
201 }}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
\r
202 p = o.v.elementAt (0);
\r
203 p.setParent (null);
\r
204 p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
\r
206 }} else if (Clazz.instanceOf (p, com.stevesoft.pat.FastMulti)) {
\r
208 ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
\r
209 } else if (Clazz.instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
\r
213 fm = new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
\r
215 if (Clazz.exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
\r
220 fm.parent = m.parent;
\r
221 fm.matchFewest = m.matchFewest;
\r
224 }if (p.next != null) {
\r
225 p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
\r
227 }, "com.stevesoft.pat.Pattern,~B,~B");
\r
228 c$.safe4fm = Clazz.defineMethod (c$, "safe4fm",
\r
230 while (x != null) {
\r
231 if (Clazz.instanceOf (x, com.stevesoft.pat.Bracket)) {
\r
232 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Range)) {
\r
233 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.oneChar)) {
\r
234 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Any)) {
\r
235 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Custom) && Clazz.instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
\r
236 ;} else if (Clazz.instanceOf (x, com.stevesoft.pat.Or)) {
\r
238 if (!o.leftForm ().equals ("(?:")) {
\r
240 }var lo = o.countMinChars ();
\r
241 var hi = o.countMaxChars ();
\r
242 if (!lo.equals (hi)) {
\r
244 }for (var i = 0; i < o.v.size (); i++) {
\r
245 if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
\r
253 }, "com.stevesoft.pat.Pattern");
\r