1 package gate.creole.morph;
2
3 import java.util.Arrays;
4
5
13
14 public class CharacterRange extends Variable {
15
16 private char [] varChars;
17
18
21 public CharacterRange() {
22
23 }
24
25
29 public boolean hasNext() {
30 if(pointer<varChars.length) {
31 return true;
32 } else {
33 return false;
34 }
35 }
36
37
41 public String next() {
42 if(pointer<varChars.length) {
43 pointer++;
44 return ""+varChars[pointer-1];
45 } else {
46 return null;
47 }
48 }
49
50
51
57 public boolean set(String varName, String varValue) {
58 this.varName = varName;
59 this.varValue = varValue.trim();
60 varValue = varValue.substring(2,varValue.length()-1);
63 String characters = "";
65 for(int i=0; i<varValue.length();i = i + 3) {
66 String set = varValue.substring(i,i+3);
67 char startWith = set.charAt(0);
68 char endWith = set.charAt(2);
69 if(startWith>endWith) {
70 char temp = startWith;
71 startWith = endWith;
72 endWith = temp;
73 }
74 for(int j=startWith;j<=endWith;j++) {
75 if(characters.indexOf((char)j)<0) {
77 characters = characters + (char)(j);
78 }
79 }
80 }
81 this.varChars = characters.toCharArray();
83 Arrays.sort(this.varChars);
84
85 this.varValue = new String(new StringBuffer(this.varValue).deleteCharAt(1));
88 return true;
89 }
90
91
99 public boolean contains(String value) {
100 for(int i=0;i<value.length();i++) {
101 if(Arrays.binarySearch(this.varChars,value.charAt(i))<0) {
102 return false;
103 }
104 }
105 return true;
106 }
107
108 }