e7621a1774be323c3dc4b569820d7298ac1701ac
[jalview.git] / src / com / stevesoft / pat / Custom.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 import java.util.Hashtable;\r
10 \r
11 /** Simple custom patterns.  See\r
12     <a href="http://javaregex.com/code/deriv2.java.html">deriv2.java</a>\r
13     and <a href="http://javaregex.com/code/deriv3.java.html">deriv3.java</a>\r
14     in the test directory.\r
15     @see com.stevesoft.pat.CustomEndpoint\r
16  */\r
17 class Custom extends PatternSub {\r
18     String select;\r
19     Validator v;\r
20     int start;\r
21     Custom(String s) {\r
22         select = s;\r
23         v = (Validator)Regex.validators.get(s);\r
24     }\r
25     public int matchInternal(int pos,Pthings pt) {\r
26         start = pos;\r
27         return sub.matchInternal(pos,pt);\r
28     }\r
29     public String toString() {\r
30         String a = v.argsave == null ? "" : ":"+v.argsave;\r
31         return "(??"+select+a+")"+nextString();\r
32     }\r
33     public patInt minChars() { return v.minChars(); }\r
34     public patInt maxChars() { return v.maxChars(); }\r
35     Pattern clone1(Hashtable h) {\r
36         Custom c = new Custom(select);\r
37         h.put(c,c);\r
38         h.put(this,c);\r
39         c.sub = sub.clone(h);\r
40         return c;\r
41     }\r
42 }\r