]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/markdown/internal/CharacterSet.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / markdown / internal / CharacterSet.java
1 package org.simantics.scl.compiler.markdown.internal;\r
2 \r
3 public class CharacterSet {\r
4     private int minChar;\r
5     private int maxChar;\r
6     boolean[] table;\r
7     \r
8     public CharacterSet(String chars) {\r
9         if(chars.isEmpty())\r
10             throw new IllegalArgumentException();\r
11         minChar = Integer.MAX_VALUE;\r
12         maxChar = Integer.MIN_VALUE;\r
13         for(int i=0;i<chars.length();++i) {\r
14             int c = (int)chars.charAt(i);\r
15             if(c == '-' && i > 0 && i < chars.length()-1)\r
16                 continue;\r
17             minChar = Math.min(minChar, c);\r
18             maxChar = Math.max(maxChar, c);\r
19         }\r
20         \r
21         table = new boolean[maxChar-minChar+1];\r
22         for(int i=0;i<chars.length();++i) {\r
23             int c = (int)chars.charAt(i);\r
24             if(i < chars.length()-2 && chars.charAt(i+1)=='-') {\r
25                 int c2 = (int)chars.charAt(i+2);\r
26                 if(c > c2) {\r
27                     int temp = c;\r
28                     c = c2;\r
29                     c2 = temp;\r
30                 }\r
31                 for(int j=c;j<=c2;++j)\r
32                     table[j - minChar] = true;\r
33                 i+=2;\r
34             }\r
35             else \r
36                 table[c - minChar] = true;\r
37         }\r
38     }\r
39     \r
40     public boolean contains(char c_) {\r
41         int c = (int)c_;\r
42         return c >= minChar && c <= maxChar && table[c - minChar];\r
43     }\r
44 }\r