case LexicalUnit.SAC_IDENT:
case LexicalUnit.SAC_STRING_VALUE:
case LexicalUnit.SAC_URI:
}
ListValue result = new ListValue();
for (;;) {
switch (lu.getLexicalUnitType()) {
case LexicalUnit.SAC_STRING_VALUE:
result.append(new StringValue(CSSPrimitiveValue.CSS_STRING,
lu.getStringValue()));
lu = lu.getNextLexicalUnit();
break;
case LexicalUnit.SAC_URI:
String uri = resolveURI(engine.getCSSBaseURI(),
lu.getStringValue());
result.append(new URIValue(lu.getStringValue(), uri));
lu = lu.getNextLexicalUnit();
if ((lu != null) &&
(lu.getLexicalUnitType() == LexicalUnit.SAC_FUNCTION)) {
if (!lu.getFunctionName().equalsIgnoreCase("format")) {
break;
}
// Format really does us no good so just ignore it.
// TODO: Should probably turn this into a ListValue
// and append the format function CSS Value.
lu = lu.getNextLexicalUnit();
}
break;
case LexicalUnit.SAC_IDENT:
StringBuffer sb = new StringBuffer(lu.getStringValue());
lu = lu.getNextLexicalUnit();
if (lu != null &&
lu.getLexicalUnitType() == LexicalUnit.SAC_IDENT) {
do {
sb.append(' ');
sb.append(lu.getStringValue());
lu = lu.getNextLexicalUnit();
} while (lu != null &&
lu.getLexicalUnitType() == LexicalUnit.SAC_IDENT);
result.append(new StringValue(CSSPrimitiveValue.CSS_STRING,
sb.toString()));
} else {
String id = sb.toString();
String s = id.toLowerCase().intern();
Value v = (Value)values.get(s);
result.append((v != null)
? v
: new StringValue
(CSSPrimitiveValue.CSS_STRING, id));
}
break;