JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / Bracket.java
1 //\r
2 // This software is now distributed according to\r
3 // the Lesser Gnu Public License.  Please see\r
4 // http://www.gnu.org/copyleft/lesser.txt for\r
5 // the details.\r
6 //    -- Happy Computing!\r
7 //\r
8 package com.stevesoft.pat;\r
9 \r
10 import java.util.*;\r
11 \r
12 /**\r
13  * The Bracket is a form of the Or class, implements the pattern element [ ].\r
14  */\r
15 class Bracket extends Or\r
16 {\r
17   boolean neg;\r
18 \r
19   Bracket(boolean n)\r
20   {\r
21     neg = n;\r
22   }\r
23 \r
24   String leftForm()\r
25   {\r
26     if (neg)\r
27     {\r
28       return "[^";\r
29     }\r
30     else\r
31     {\r
32       return "[";\r
33     }\r
34   }\r
35 \r
36   String rightForm()\r
37   {\r
38     return "]";\r
39   }\r
40 \r
41   String sepForm()\r
42   {\r
43     return "";\r
44   }\r
45 \r
46   public int matchInternal(int pos, Pthings pt)\r
47   {\r
48     if (pos >= pt.src.length())\r
49     {\r
50       return -1;\r
51     }\r
52     int r = super.matchInternal(pos, pt);\r
53     if ((neg && r < 0) || (!neg && r >= 0))\r
54     {\r
55       return nextMatch(pos + 1, pt);\r
56     }\r
57     return -1;\r
58   }\r
59 \r
60   public patInt minChars()\r
61   {\r
62     return new patInt(1);\r
63   }\r
64 \r
65   public patInt maxChars()\r
66   {\r
67     return new patInt(1);\r
68   }\r
69 \r
70   public Or addOr(Pattern p)\r
71   {\r
72     pv = null;\r
73     v.addElement(p);\r
74     p.setParent(null);\r
75     return this;\r
76   }\r
77 \r
78   public Pattern clone1(Hashtable h)\r
79   {\r
80     Bracket b = new Bracket(neg);\r
81     b.v = new Vector();\r
82     for (int i = 0; i < v.size(); i++)\r
83     {\r
84       b.v.addElement(((Pattern) v.elementAt(i)).clone1(h));\r
85     }\r
86     return b;\r
87   }\r
88 };\r