JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / Boundary.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 /** This class implements the word boundary pattern element: \b. */\r
13 class Boundary extends Pattern\r
14 {\r
15   public String toString()\r
16   {\r
17     return "\\b" + nextString();\r
18   }\r
19 \r
20   boolean isAChar(char c)\r
21   {\r
22     if (c >= 'a' && c <= 'z')\r
23     {\r
24       return true;\r
25     }\r
26     if (c >= 'A' && c <= 'Z')\r
27     {\r
28       return true;\r
29     }\r
30     if (c >= '0' && c <= '9')\r
31     {\r
32       return true;\r
33     }\r
34     if (c == '_')\r
35     {\r
36       return true;\r
37     }\r
38     return false;\r
39   }\r
40 \r
41   boolean matchLeft(int pos, Pthings pt)\r
42   {\r
43     if (pos <= 0)\r
44     {\r
45       return true;\r
46     }\r
47     if (isAChar(pt.src.charAt(pos)) && isAChar(pt.src.charAt(pos - 1)))\r
48     {\r
49       return false;\r
50     }\r
51     return true;\r
52   }\r
53 \r
54   boolean matchRight(int pos, Pthings pt)\r
55   {\r
56     if (pos < 0)\r
57     {\r
58       return false;\r
59     }\r
60     if (pos + 1 >= pt.src.length())\r
61     {\r
62       return true;\r
63     }\r
64     if (isAChar(pt.src.charAt(pos)) && isAChar(pt.src.charAt(pos + 1)))\r
65     {\r
66       return false;\r
67     }\r
68     return true;\r
69   }\r
70 \r
71   public int matchInternal(int pos, Pthings pt)\r
72   {\r
73     if (matchRight(pos - 1, pt) || matchLeft(pos, pt))\r
74     {\r
75       return nextMatch(pos, pt);\r
76     }\r
77     return -1;\r
78   }\r
79 \r
80   public patInt maxChars()\r
81   {\r
82     return new patInt(0);\r
83   }\r
84 \r
85   public Pattern clone1(Hashtable h)\r
86   {\r
87     return new Boundary();\r
88   }\r
89 };\r