Menu

#47 Old IE CSS Expressions not supported

0.9.14
closed
RBRi
None
1
2015-02-26
2014-02-15
No

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.

Discussion

  • RBRi

    RBRi - 2014-05-02
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,14 +1,16 @@
     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)
    @@ -22,6 +24,6 @@
        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.
    
     
  • RBRi

    RBRi - 2014-05-02

    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.

     
  • RBRi

    RBRi - 2014-05-02
    • status: open --> closed
    • assigned_to: RBRi
     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB