Parsing a css file with content:
.dijitIEFixedToolbar
{
position: absolute;
top: expression(eval((document.documentElement||document.body).scrollTop));
}
leads to error:
java.lang.IllegalArgumentException: ERROR: at position <4,23> Fehler in Ausdruck. (Ungültiger Token "(". Erwartet wurde einer von: <S>, <NUMBER>, "inherit", <IDENT>, <STRING>, <PLUS>, <HASH>, <EMS>, <EXS>, <LENGTH_PX>, <LENGTH_CM>, <LENGTH_MM>, <LENGTH_IN>, <LENGTH_PT>, <LENGTH_PC>, <ANGLE_DEG>, <ANGLE_RAD>, <ANGLE_GRAD>, <TIME_MS>, <TIME_S>, <FREQ_HZ>, <FREQ_KHZ>, <PERCENTAGE>, <DIMENSION>, <URI>, <FUNCTION>, "-", ")".)
at com.steadystate.css.parser.AbstractSACParser.toCSSParseException(AbstractSACParser.java:251)
at com.steadystate.css.parser.SACParserCSS3.expr(SACParserCSS3.java:1967)
at com.steadystate.css.parser.SACParserCSS3.declaration(SACParserCSS3.java:1863)
at com.steadystate.css.parser.SACParserCSS3.styleDeclaration(SACParserCSS3.java:1823)
at com.steadystate.css.parser.SACParserCSS3.styleRule(SACParserCSS3.java:1059)
at com.steadystate.css.parser.SACParserCSS3.styleSheetRuleList(SACParserCSS3.java:167)
at com.steadystate.css.parser.SACParserCSS3.styleSheet(SACParserCSS3.java:53)
at com.steadystate.css.parser.AbstractSACParser.parseStyleSheet(AbstractSACParser.java:284)
at com.steadystate.css.parser.SACParserCSS3.parseStyleSheet(SACParserCSS3.java:23)
at com.steadystate.css.parser.CSSOMParser.parseStyleSheet(CSSOMParser.java:146)
at de.conterra.mapapps.js.ParsingCSSCompressor.compress(ParsingCSSCompressor.java:39)
at de.conterra.mapapps.js.ParsingCSSCompressorTest.testExpressionOptimize(ParsingCSSCompressorTest.java:51)
The ie expression syntax is not supported by the parser. Of course this is old stuff and non standard, but it would be good, if the parser does not fail reading them.
Anonymous
Diff:
Hi Marko,
there is a fresh snapshot available. The parser still does not support this outdated stuff. But i have fixed a major issue that affects the skipping in this case. Now the rule is ignored, but all other expressions after this inside this declarations are correctly parsed.
Hope that helps (at least a bit).
I think ignoring something that is not supported is more or less what browsers are doing.