JAL-1807 still testing
[jalviewjs.git] / unused / com / stevesoft / pat / Range.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 /** Thrown when one encounters things like [z-a] */\r
13 class BadRangeArgs extends RegSyntax\r
14 {\r
15 };\r
16 \r
17 /**\r
18  * Implments a subelement (ranges) of the [] pattern element. For example,\r
19  * [a-z023] is implemented using a range and tree oneChar classes.\r
20  * \r
21  * @see Bracket\r
22  * @see oneChar\r
23  */\r
24 class Range extends Pattern\r
25 {\r
26   char lo, hi, altlo, althi;\r
27 \r
28   boolean printBrackets = false;\r
29 \r
30   public String toString()\r
31   {\r
32     String s = protect("" + lo, PROTECT_THESE, ESC) + "-"\r
33             + protect("" + hi, PROTECT_THESE, ESC);\r
34     if (!printBrackets)\r
35     {\r
36       return s;\r
37     }\r
38     return "[" + s + "]";\r
39   }\r
40 \r
41   Range(char loi, char hii) throws RegSyntax\r
42   {\r
43     lo = loi;\r
44     hi = hii;\r
45     oneChar o = null;\r
46     if (lo >= hi)\r
47     {\r
48       // throw new BadRangeArgs();\r
49       RegSyntaxError.endItAll("Badly formed []'s : " + lo + " >= " + hi);\r
50     }\r
51     o = new oneChar(lo);\r
52     altlo = o.altc;\r
53     o = new oneChar(hi);\r
54     althi = o.altc;\r
55   }\r
56 \r
57   public int matchInternal(int pos, Pthings pt)\r
58   {\r
59     if (pos >= pt.src.length())\r
60     {\r
61       return -1;\r
62     }\r
63     if (Masked(pos, pt))\r
64     {\r
65       return -1;\r
66     }\r
67     char c = pt.src.charAt(pos);\r
68     if (lo <= c && c <= hi || (pt.ignoreCase && (altlo <= c && c <= althi)))\r
69     {\r
70       return nextMatch(pos + 1, pt);\r
71     }\r
72     return -1;\r
73   }\r
74 \r
75   public patInt minChars()\r
76   {\r
77     return new patInt(1);\r
78   }\r
79 \r
80   public patInt maxChars()\r
81   {\r
82     return new patInt(1);\r
83   }\r
84 \r
85   public Pattern clone1(Hashtable h)\r
86   {\r
87     try\r
88     {\r
89       Range r = new Range(lo, hi);\r
90       r.printBrackets = printBrackets;\r
91       return r;\r
92     } catch (RegSyntax rs)\r
93     {\r
94       return null;\r
95     }\r
96   }\r
97 };\r