src/share/classes/java/util/regex/UnicodeProp.java

Print this page




 164                       (1 << Character.SURROGATE) |
 165                       (1 << Character.UNASSIGNED)) >> Character.getType(ch)) & 1)
 166                    == 0;
 167         }
 168     },
 169 
 170     PRINT {
 171         // \p{graph}
 172         // \p{blank}
 173         // -- \p{cntrl}
 174         public boolean is(int ch) {
 175             return (GRAPH.is(ch) || BLANK.is(ch)) && !CONTROL.is(ch);
 176         }
 177     },
 178 
 179     WORD {
 180         //  \p{alpha}
 181         //  \p{gc=Mark}
 182         //  \p{digit}
 183         //  \p{gc=Connector_Punctuation}

 184 
 185         public boolean is(int ch) {
 186             return ALPHABETIC.is(ch) ||
 187                    ((((1 << Character.NON_SPACING_MARK) |
 188                       (1 << Character.ENCLOSING_MARK) |
 189                       (1 << Character.COMBINING_SPACING_MARK) |
 190                       (1 << Character.DECIMAL_DIGIT_NUMBER) |
 191                       (1 << Character.CONNECTOR_PUNCTUATION)) >> Character.getType(ch)) & 1)
 192                    != 0;








 193         }
 194     };
 195 
 196     private final static HashMap<String, String> posix = new HashMap<>();
 197     private final static HashMap<String, String> aliases = new HashMap<>();
 198     static {
 199         posix.put("ALPHA", "ALPHABETIC");
 200         posix.put("LOWER", "LOWERCASE");
 201         posix.put("UPPER", "UPPERCASE");
 202         posix.put("SPACE", "WHITE_SPACE");
 203         posix.put("PUNCT", "PUNCTUATION");
 204         posix.put("XDIGIT","HEX_DIGIT");
 205         posix.put("ALNUM", "ALNUM");
 206         posix.put("CNTRL", "CONTROL");
 207         posix.put("DIGIT", "DIGIT");
 208         posix.put("BLANK", "BLANK");
 209         posix.put("GRAPH", "GRAPH");
 210         posix.put("PRINT", "PRINT");
 211 
 212         aliases.put("WHITESPACE", "WHITE_SPACE");
 213         aliases.put("HEXDIGIT","HEX_DIGIT");
 214         aliases.put("NONCHARACTERCODEPOINT", "NONCHARACTER_CODE_POINT");

 215     }
 216 
 217     public static UnicodeProp forName(String propName) {
 218         propName = propName.toUpperCase(Locale.ENGLISH);
 219         String alias = aliases.get(propName);
 220         if (alias != null)
 221             propName = alias;
 222         try {
 223             return valueOf (propName);
 224         } catch (IllegalArgumentException x) {}
 225         return null;
 226     }
 227 
 228     public static UnicodeProp forPOSIXName(String propName) {
 229         propName = posix.get(propName.toUpperCase(Locale.ENGLISH));
 230         if (propName == null)
 231             return null;
 232         return valueOf (propName);
 233     }
 234 


 164                       (1 << Character.SURROGATE) |
 165                       (1 << Character.UNASSIGNED)) >> Character.getType(ch)) & 1)
 166                    == 0;
 167         }
 168     },
 169 
 170     PRINT {
 171         // \p{graph}
 172         // \p{blank}
 173         // -- \p{cntrl}
 174         public boolean is(int ch) {
 175             return (GRAPH.is(ch) || BLANK.is(ch)) && !CONTROL.is(ch);
 176         }
 177     },
 178 
 179     WORD {
 180         //  \p{alpha}
 181         //  \p{gc=Mark}
 182         //  \p{digit}
 183         //  \p{gc=Connector_Punctuation}
 184         //  \p{Join_Control}    200C..200D
 185 
 186         public boolean is(int ch) {
 187             return ALPHABETIC.is(ch) ||
 188                    ((((1 << Character.NON_SPACING_MARK) |
 189                       (1 << Character.ENCLOSING_MARK) |
 190                       (1 << Character.COMBINING_SPACING_MARK) |
 191                       (1 << Character.DECIMAL_DIGIT_NUMBER) |
 192                       (1 << Character.CONNECTOR_PUNCTUATION)) >> Character.getType(ch)) & 1)
 193                    != 0 ||
 194                    JOIN_CONTROL.is(ch);
 195         }
 196     },
 197 
 198     JOIN_CONTROL {
 199         //  200C..200D    PropList.txt:Join_Control
 200         public boolean is(int ch) {
 201            return (ch == 0x200C || ch == 0x200D);
 202         }
 203     };
 204 
 205     private final static HashMap<String, String> posix = new HashMap<>();
 206     private final static HashMap<String, String> aliases = new HashMap<>();
 207     static {
 208         posix.put("ALPHA", "ALPHABETIC");
 209         posix.put("LOWER", "LOWERCASE");
 210         posix.put("UPPER", "UPPERCASE");
 211         posix.put("SPACE", "WHITE_SPACE");
 212         posix.put("PUNCT", "PUNCTUATION");
 213         posix.put("XDIGIT","HEX_DIGIT");
 214         posix.put("ALNUM", "ALNUM");
 215         posix.put("CNTRL", "CONTROL");
 216         posix.put("DIGIT", "DIGIT");
 217         posix.put("BLANK", "BLANK");
 218         posix.put("GRAPH", "GRAPH");
 219         posix.put("PRINT", "PRINT");
 220 
 221         aliases.put("WHITESPACE", "WHITE_SPACE");
 222         aliases.put("HEXDIGIT","HEX_DIGIT");
 223         aliases.put("NONCHARACTERCODEPOINT", "NONCHARACTER_CODE_POINT");
 224         aliases.put("JOINCONTROL", "JOIN_CONTROL");
 225     }
 226 
 227     public static UnicodeProp forName(String propName) {
 228         propName = propName.toUpperCase(Locale.ENGLISH);
 229         String alias = aliases.get(propName);
 230         if (alias != null)
 231             propName = alias;
 232         try {
 233             return valueOf (propName);
 234         } catch (IllegalArgumentException x) {}
 235         return null;
 236     }
 237 
 238     public static UnicodeProp forPOSIXName(String propName) {
 239         propName = posix.get(propName.toUpperCase(Locale.ENGLISH));
 240         if (propName == null)
 241             return null;
 242         return valueOf (propName);
 243     }
 244