in src/main/java/org/apache/sling/xss/impl/style/ValidatingDocumentHandler.java [183:240]
private String lexicalValueToString(LexicalUnit lu) {
switch (lu.getLexicalUnitType()) {
case LexicalUnit.SAC_PERCENTAGE:
case LexicalUnit.SAC_DIMENSION:
case LexicalUnit.SAC_EM:
case LexicalUnit.SAC_EX:
case LexicalUnit.SAC_PIXEL:
case LexicalUnit.SAC_INCH:
case LexicalUnit.SAC_CENTIMETER:
case LexicalUnit.SAC_MILLIMETER:
case LexicalUnit.SAC_POINT:
case LexicalUnit.SAC_PICA:
case LexicalUnit.SAC_DEGREE:
case LexicalUnit.SAC_GRADIAN:
case LexicalUnit.SAC_RADIAN:
case LexicalUnit.SAC_MILLISECOND:
case LexicalUnit.SAC_SECOND:
case LexicalUnit.SAC_HERTZ:
case LexicalUnit.SAC_KILOHERTZ:
// various measurements
return lu.getFloatValue() + lu.getDimensionUnitText();
case LexicalUnit.SAC_INTEGER:
// number
return String.valueOf(lu.getIntegerValue());
case LexicalUnit.SAC_REAL:
// number
return String.valueOf(lu.getFloatValue());
case LexicalUnit.SAC_STRING_VALUE:
case LexicalUnit.SAC_IDENT:
// identifier, potentially needs quoting
String stringValue = lu.getStringValue();
if (stringValue.indexOf(" ") != -1) stringValue = "\"" + stringValue + "\"";
return stringValue;
case LexicalUnit.SAC_URI:
// this is a URL
return "url(" + lu.getStringValue() + ")";
case LexicalUnit.SAC_RGBCOLOR:
// this is a rgb encoded color; technically we don't need to encode
// it precisely like this but it makes it simpler to keep the tests
// based on the AntiSamy implementation
return toRgbString(lu);
case LexicalUnit.SAC_INHERIT:
// constant
return "inherit";
case LexicalUnit.SAC_OPERATOR_COMMA:
return ",";
case LexicalUnit.SAC_ATTR:
case LexicalUnit.SAC_COUNTER_FUNCTION:
case LexicalUnit.SAC_COUNTERS_FUNCTION:
case LexicalUnit.SAC_FUNCTION:
case LexicalUnit.SAC_RECT_FUNCTION:
case LexicalUnit.SAC_SUB_EXPRESSION:
case LexicalUnit.SAC_UNICODERANGE:
default:
// unsupported
return null;
}
}