Advertisement
T99

TokenizerMode.java

T99
Jun 21st, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.23 KB | None | 0 0
  1. // inner class
  2. private enum TokenizerMode {
  3.    
  4.     SPACE_DELIMITING (' '),
  5.     QUOTE_DELIMITING ('\'', '"', '`');
  6.    
  7.     final char[] validDelimiters;
  8.     static Map<Set<Character>, TokenizerMode> reverseLookup = new HashMap<>();
  9.     static char[] allValidDelimiters;
  10.    
  11.     static {
  12.        
  13.         for (TokenizerMode mode: values()) {
  14.            
  15.             Set<Character> characterSet = new HashSet<>();
  16.            
  17.             for (char c: mode.getValidDelimiters()) {
  18.                
  19.                 characterSet.add(c);
  20.                
  21.             }
  22.            
  23.             reverseLookup.put(characterSet, mode);
  24.            
  25.         }
  26.        
  27.     }
  28.    
  29.     TokenizerMode(char... validDelimiters) {
  30.        
  31.         this.validDelimiters = validDelimiters;
  32.        
  33.     }
  34.    
  35.     static char[] getAllValidDelimiters() {
  36.        
  37.         if (allValidDelimiters == null) {
  38.            
  39.             char[] allValidDelimiters = new char[reverseLookup.keySet().size()];
  40.            
  41.             for (int i = 0; i < allValidDelimiters.length; i++) {
  42.                
  43.                 allValidDelimiters[i] = reverseLookup.keySet().toArray(new Character[0])[i];
  44.                
  45.             }
  46.            
  47.         }
  48.        
  49.         return allValidDelimiters;
  50.        
  51.     }
  52.    
  53.     boolean checkIfValidDelimiter(char character) {
  54.    
  55.         for (char c: validDelimiters) {
  56.            
  57.             if (c == character) return true;
  58.            
  59.         }
  60.        
  61.         return false;
  62.    
  63.     }
  64.    
  65.     char[] getValidDelimiters() {
  66.        
  67.         return validDelimiters;
  68.        
  69.     }
  70.    
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement