nashorn/src/jdk/nashorn/internal/runtime/regexp/joni/encoding/PosixBracket.java
changeset 18011 05a7d1f1746a
parent 18010 604faee85350
parent 17815 b72ae39e1329
child 18012 03261c9bd428
equal deleted inserted replaced
18010:604faee85350 18011:05a7d1f1746a
     1 /*
       
     2  * Permission is hereby granted, free of charge, to any person obtaining a copy of
       
     3  * this software and associated documentation files (the "Software"), to deal in
       
     4  * the Software without restriction, including without limitation the rights to
       
     5  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
       
     6  * of the Software, and to permit persons to whom the Software is furnished to do
       
     7  * so, subject to the following conditions:
       
     8  *
       
     9  * The above copyright notice and this permission notice shall be included in all
       
    10  * copies or substantial portions of the Software.
       
    11  *
       
    12  * THE SOFTWARE IS PROVIDED "AS IS".toCharArray(), WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       
    13  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       
    14  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
       
    15  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
       
    16  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
       
    17  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
       
    18  * SOFTWARE.
       
    19  */
       
    20 package jdk.nashorn.internal.runtime.regexp.joni.encoding;
       
    21 
       
    22 import jdk.nashorn.internal.runtime.regexp.joni.exception.ErrorMessages;
       
    23 import jdk.nashorn.internal.runtime.regexp.joni.exception.JOniException;
       
    24 
       
    25 import java.util.HashMap;
       
    26 
       
    27 public class PosixBracket {
       
    28 
       
    29     public static final char[][] PBSNamesLower = {
       
    30             "alnum".toCharArray(),
       
    31             "alpha".toCharArray(),
       
    32             "blank".toCharArray(),
       
    33             "cntrl".toCharArray(),
       
    34             "digit".toCharArray(),
       
    35             "graph".toCharArray(),
       
    36             "lower".toCharArray(),
       
    37             "print".toCharArray(),
       
    38             "punct".toCharArray(),
       
    39             "space".toCharArray(),
       
    40             "upper".toCharArray(),
       
    41             "xdigit".toCharArray(),
       
    42             "ascii".toCharArray(),
       
    43             "word".toCharArray()
       
    44     };
       
    45 
       
    46     public static final int PBSValues[] = {
       
    47             CharacterType.ALNUM,
       
    48             CharacterType.ALPHA,
       
    49             CharacterType.BLANK,
       
    50             CharacterType.CNTRL,
       
    51             CharacterType.DIGIT,
       
    52             CharacterType.GRAPH,
       
    53             CharacterType.LOWER,
       
    54             CharacterType.PRINT,
       
    55             CharacterType.PUNCT,
       
    56             CharacterType.SPACE,
       
    57             CharacterType.UPPER,
       
    58             CharacterType.XDIGIT,
       
    59             CharacterType.ASCII,
       
    60             CharacterType.WORD,
       
    61     };
       
    62 
       
    63     public static int propertyNameToCType(String name) {
       
    64         name = name.toLowerCase();
       
    65         if (!PBSTableUpper.containsKey(name)) {
       
    66             throw new JOniException(ErrorMessages.ERR_INVALID_CHAR_PROPERTY_NAME.replaceAll("%n", name));
       
    67         }
       
    68         return PBSTableUpper.get(name);
       
    69     }
       
    70 
       
    71     private static final HashMap<String,Integer> PBSTableUpper = new HashMap<String,Integer>();
       
    72 
       
    73     static {
       
    74         for (int i=0; i<PBSValues.length; i++) PBSTableUpper.put(new String(PBSNamesLower[i]), PBSValues[i]);
       
    75     }
       
    76 
       
    77 }