Formatting
[jalview.git] / src / com / stevesoft / pat / End.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 //class AddToEnd extends RegSyntax {};\r
13 \r
14 /** Compiles the '$' or the '\Z' Pattern.  It is\r
15  an error to have further Pattern elements after\r
16  '\Z'.  It is the end of the String. */\r
17 class End\r
18     extends Pattern\r
19 {\r
20   boolean retIsEnd;\r
21   End(boolean b)\r
22   {\r
23     retIsEnd = b;\r
24   }\r
25 \r
26   public int matchInternal(int pos, Pthings pt)\r
27   {\r
28     if (retIsEnd && pt.mFlag && pos < pt.src.length())\r
29     {\r
30       if (pt.src.charAt(pos) == '\n')\r
31       {\r
32         return nextMatch(pos, pt);\r
33       }\r
34     }\r
35     if (pt.src.length() == pos)\r
36     {\r
37       return nextMatch(pos, pt);\r
38     }\r
39     else if (pos < pt.src.length())\r
40     {\r
41       // Access the next character...\r
42       // this is crucial to making\r
43       // RegexReader work.\r
44       pt.src.charAt(pos);\r
45     }\r
46     return -1;\r
47   }\r
48 \r
49   public String toString()\r
50   {\r
51     if (retIsEnd)\r
52     {\r
53       return "$";\r
54     }\r
55     else\r
56     {\r
57       return "\\Z";\r
58     }\r
59   }\r
60 \r
61   public patInt maxChars()\r
62   {\r
63     return new patInt(1);\r
64   }\r
65 \r
66   public Pattern clone1(Hashtable h)\r
67   {\r
68     return new End(retIsEnd);\r
69   }\r
70 };\r