-//
-// This software is now distributed according to
-// the Lesser Gnu Public License. Please see
-// http://www.gnu.org/copyleft/lesser.txt for
-// the details.
-// -- Happy Computing!
-//
-package com.stevesoft.pat;
-
-import java.util.*;
-
-/**
- * This class implements the (?: ... ) extended Pattern. It provides a base
- * class from which we derive the [ ... ], ( ... ), (?! ... ), and (?= ... )
- * patterns.
- */
-class Or extends Pattern
-{
- Vector v;
-
- Pattern[] pv = null;
-
- Or()
- {
- v = new Vector();
- }
-
- String leftForm()
- {
- return "(?:";
- }
-
- String rightForm()
- {
- return ")";
- }
-
- String sepForm()
- {
- return "|";
- }
-
- public Or addOr(Pattern p)
- {
- pv = null;
- v.addElement(p);
- p.setParent(this);
- return this;
- }
-
- public String toString()
- {
- int i;
- javajs.util.SB sb = new javajs.util.SB();
- sb.append(leftForm());
- if (v.size() > 0)
- {
- sb.append(((Pattern) v.elementAt(0)).toString());
- }
- for (i = 1; i < v.size(); i++)
- {
- sb.append(sepForm());
- sb.append(((Pattern) v.elementAt(i)).toString());
- }
- sb.append(rightForm());
- sb.append(nextString());
- return sb.toString();
- }
-
- public int matchInternal(int pos, Pthings pt)
- {
- if (pv == null)
- {
- pv = new Pattern[v.size()];
- v.copyInto(pv);
- }
- for (int i = 0; i < v.size(); i++)
- {
- Pattern p = pv[i]; // (Pattern)v.elementAt(i);
- int r = p.matchInternal(pos, pt);
- if (r >= 0)
- {
- return r;
- }
- }
- return -1;
- }
-
- public patInt minChars()
- {
- if (v.size() == 0)
- {
- return new patInt(0);
- }
- patInt m = ((Pattern) v.elementAt(0)).countMinChars();
- for (int i = 1; i < v.size(); i++)
- {
- Pattern p = (Pattern) v.elementAt(i);
- m.mineq(p.countMinChars());
- }
- return m;
- }
-
- public patInt maxChars()
- {
- if (v.size() == 0)
- {
- return new patInt(0);
- }
- patInt m = ((Pattern) v.elementAt(0)).countMaxChars();
- for (int i = 1; i < v.size(); i++)
- {
- Pattern p = (Pattern) v.elementAt(i);
- m.maxeq(p.countMaxChars());
- }
- return m;
- }
-
- Pattern clone1(Hashtable h)
- {
- Or o = new Or();
- h.put(this, o);
- h.put(o, o);
- for (int i = 0; i < v.size(); i++)
- {
- o.v.addElement(((Pattern) v.elementAt(i)).clone(h));
- }
- return o;
- }
-};
+//\r
+// This software is now distributed according to\r
+// the Lesser Gnu Public License. Please see\r
+// http://www.gnu.org/copyleft/lesser.txt for\r
+// the details.\r
+// -- Happy Computing!\r
+//\r
+package com.stevesoft.pat;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * This class implements the (?: ... ) extended Pattern. It provides a base\r
+ * class from which we derive the [ ... ], ( ... ), (?! ... ), and (?= ... )\r
+ * patterns.\r
+ */\r
+class Or extends Pattern\r
+{\r
+ Vector v;\r
+\r
+ Pattern[] pv = null;\r
+\r
+ Or()\r
+ {\r
+ v = new Vector();\r
+ }\r
+\r
+ String leftForm()\r
+ {\r
+ return "(?:";\r
+ }\r
+\r
+ String rightForm()\r
+ {\r
+ return ")";\r
+ }\r
+\r
+ String sepForm()\r
+ {\r
+ return "|";\r
+ }\r
+\r
+ public Or addOr(Pattern p)\r
+ {\r
+ pv = null;\r
+ v.addElement(p);\r
+ p.setParent(this);\r
+ return this;\r
+ }\r
+\r
+ public String toString()\r
+ {\r
+ int i;\r
+ javajs.util.SB sb = new javajs.util.SB();\r
+ sb.append(leftForm());\r
+ if (v.size() > 0)\r
+ {\r
+ sb.append(((Pattern) v.elementAt(0)).toString());\r
+ }\r
+ for (i = 1; i < v.size(); i++)\r
+ {\r
+ sb.append(sepForm());\r
+ sb.append(((Pattern) v.elementAt(i)).toString());\r
+ }\r
+ sb.append(rightForm());\r
+ sb.append(nextString());\r
+ return sb.toString();\r
+ }\r
+\r
+ public int matchInternal(int pos, Pthings pt)\r
+ {\r
+ if (pv == null)\r
+ {\r
+ pv = new Pattern[v.size()];\r
+ v.copyInto(pv);\r
+ }\r
+ for (int i = 0; i < v.size(); i++)\r
+ {\r
+ Pattern p = pv[i]; // (Pattern)v.elementAt(i);\r
+ int r = p.matchInternal(pos, pt);\r
+ if (r >= 0)\r
+ {\r
+ return r;\r
+ }\r
+ }\r
+ return -1;\r
+ }\r
+\r
+ public patInt minChars()\r
+ {\r
+ if (v.size() == 0)\r
+ {\r
+ return new patInt(0);\r
+ }\r
+ patInt m = ((Pattern) v.elementAt(0)).countMinChars();\r
+ for (int i = 1; i < v.size(); i++)\r
+ {\r
+ Pattern p = (Pattern) v.elementAt(i);\r
+ m.mineq(p.countMinChars());\r
+ }\r
+ return m;\r
+ }\r
+\r
+ public patInt maxChars()\r
+ {\r
+ if (v.size() == 0)\r
+ {\r
+ return new patInt(0);\r
+ }\r
+ patInt m = ((Pattern) v.elementAt(0)).countMaxChars();\r
+ for (int i = 1; i < v.size(); i++)\r
+ {\r
+ Pattern p = (Pattern) v.elementAt(i);\r
+ m.maxeq(p.countMaxChars());\r
+ }\r
+ return m;\r
+ }\r
+\r
+ Pattern clone1(Hashtable h)\r
+ {\r
+ Or o = new Or();\r
+ h.put(this, o);\r
+ h.put(o, o);\r
+ for (int i = 0; i < v.size(); i++)\r
+ {\r
+ o.v.addElement(((Pattern) v.elementAt(i)).clone(h));\r
+ }\r
+ return o;\r
+ }\r
+};\r