All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unbescape.css.CssIdentifierEscapeLevel Maven / Gradle / Ivy

The newest version!
/*
 * =============================================================================
 * 
 *   Copyright (c) 2014-2017, The UNBESCAPE team (http://www.unbescape.org)
 * 
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 * 
 *       http://www.apache.org/licenses/LICENSE-2.0
 * 
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 * 
 * =============================================================================
 */
package org.unbescape.css;

/**
 * 

* Levels defined for escape/unescape operations of CSS identifiers: *

* *
    *
  • Level 1: Escape only the basic escape set. Note the result of a level-1 escape * operation might still contain non-ASCII characters if they existed in input, and therefore you * will still need to correctly manage your input/output character encoding settings. Such * basic set consists of: *
      *
    • The Backslash Escapes: * \ (U+0020), * \! (U+0021), * \" (U+0022), * \# (U+0023), * \$ (U+0024), * \% (U+0025), * \& (U+0026), * \' (U+0027), * \( (U+0028), * \) (U+0029), * \* (U+002A), * \+ (U+002B), * \, (U+002C), * \. (U+002E), * \/ (U+002F), * \; (U+003B), * \< (U+003C), * \= (U+003D), * \> (U+003E), * \? (U+003F), * \@ (U+0040), * \[ (U+005B), * \\ (U+005C), * \] (U+005D), * \^ (U+005E), * \` (U+0060), * \{ (U+007B), * \| (U+007C), * \} (U+007D) and * \~ (U+007E). * Note that the \- (U+002D) escape sequence exists, but will only be used * when an identifier starts with two hypens or hyphen + digit. Also, the \_ * (U+005F) escape will only be used at the beginning of an identifier to avoid * problems with Internet Explorer 6. In the same sense, note that the \: * (U+003A) escape sequence is also defined in the standard, but will not be * used for escaping as Internet Explorer < 8 does not recognize it. *
    • *
    • * Two ranges of non-displayable, control characters: U+0000 to U+001F * and U+007F to U+009F. *
    • *
    *
  • *
  • Level 2: Escape the basic escape set (as defined in level 1), plus all * non-ASCII characters. The result of a level-2 escape operation is therefore always ASCII-only text, and * safer to use in complex scenarios with mixed input/output character encodings.
  • *
  • Level 3: Escape all non-alphanumeric characters, this is, all but those in the * A-Z, a-z and 0-9 ranges. This level * can be safely used for completely escaping texts, including whitespace, line feeds, punctuation, etc. in * scenarios where this adds an extra level of safety.
  • *
  • Level 4: Escape all characters, even alphanumeric ones.
  • *
* *

* For further information, see the Glossary and the References sections at the * documentation for the {@link CssEscape} class. *

* * @author Daniel Fernández * * @since 1.0.0 * */ public enum CssIdentifierEscapeLevel { /** * Level 1 escape: escape only the basic escape set: Backslash Escape plus non-displayable control chars. */ LEVEL_1_BASIC_ESCAPE_SET(1), /** * Level 2 escape: escape the basic escape set plus all non-ASCII characters (result will always be ASCII). */ LEVEL_2_ALL_NON_ASCII_PLUS_BASIC_ESCAPE_SET(2), /** * Level 3 escape: escape all non-alphanumeric characteres (escape all but those in the * A-Z, a-z and 0-9 ranges). */ LEVEL_3_ALL_NON_ALPHANUMERIC(3), /** * Level 4 escape: escape all characters, including alphanumeric. */ LEVEL_4_ALL_CHARACTERS(4); private final int escapeLevel; /** *

* Utility method for obtaining an enum value from its corresponding int level value. *

* * @param level the level * @return the escape level enum constant, or IllegalArgumentException if level does not exist. */ public static CssIdentifierEscapeLevel forLevel(final int level) { switch (level) { case 1: return LEVEL_1_BASIC_ESCAPE_SET; case 2: return LEVEL_2_ALL_NON_ASCII_PLUS_BASIC_ESCAPE_SET; case 3: return LEVEL_3_ALL_NON_ALPHANUMERIC; case 4: return LEVEL_4_ALL_CHARACTERS; default: throw new IllegalArgumentException("No escape level enum constant defined for level: " + level); } } CssIdentifierEscapeLevel(final int escapeLevel) { this.escapeLevel = escapeLevel; } /** * Return the int escape level. * * @return the escape level. */ public int getEscapeLevel() { return this.escapeLevel; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy