Formatting
[jalview.git] / src / 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 /** The Bracket is a form of the Or class,\r
13  implements the pattern element [  ]. */\r
14 class Bracket\r
15     extends Or\r
16 {\r
17   boolean neg;\r
18   Bracket(boolean n)\r
19   {\r
20     neg = n;\r
21   }\r
22 \r
23   String leftForm()\r
24   {\r
25     if (neg)\r
26     {\r
27       return "[^";\r
28     }\r
29     else\r
30     {\r
31       return "[";\r
32     }\r
33   }\r
34 \r
35   String rightForm()\r
36   {\r
37     return "]";\r
38   }\r
39 \r
40   String sepForm()\r
41   {\r
42     return "";\r
43   }\r
44 \r
45   public int matchInternal(int pos, Pthings pt)\r
46   {\r
47     if (pos >= pt.src.length())\r
48     {\r
49       return -1;\r
50     }\r
51     int r = super.matchInternal(pos, pt);\r
52     if ( (neg && r < 0) || (!neg && r >= 0))\r
53     {\r
54       return nextMatch(pos + 1, pt);\r
55     }\r
56     return -1;\r
57   }\r
58 \r
59   public patInt minChars()\r
60   {\r
61     return new patInt(1);\r
62   }\r
63 \r
64   public patInt maxChars()\r
65   {\r
66     return new patInt(1);\r
67   }\r
68 \r
69   public Or addOr(Pattern p)\r
70   {\r
71     pv = null;\r
72     v.addElement(p);\r
73     p.setParent(null);\r
74     return this;\r
75   }\r
76 \r
77   public Pattern clone1(Hashtable h)\r
78   {\r
79     Bracket b = new Bracket(neg);\r
80     b.v = new Vector();\r
81     for (int i = 0; i < v.size(); i++)\r
82     {\r
83       b.v.addElement( ( (Pattern) v.elementAt(i)).clone1(h));\r
84     }\r
85     return b;\r
86   }\r
87 };\r