- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 21 Oct 2011 12:52:30 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/css In directory hutz:/tmp/cvs-serv25180/css/css Modified Files: StyleSheetParser.java Log Message: parsing of mediaquerylist for html links is now done reusing the same logic (parsing mediaquerylist form the parser, using a String Reader), so that should finish media queries per http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/ Index: StyleSheetParser.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/css/StyleSheetParser.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- StyleSheetParser.java 21 Oct 2011 01:49:06 -0000 1.19 +++ StyleSheetParser.java 21 Oct 2011 12:52:28 -0000 1.20 @@ -16,10 +16,12 @@ import org.w3c.css.parser.CssSelectors; import org.w3c.css.parser.CssValidatorListener; import org.w3c.css.parser.Errors; +import org.w3c.css.parser.analyzer.ParseException; import org.w3c.css.parser.analyzer.TokenMgrError; import org.w3c.css.properties.css.CssProperty; import org.w3c.css.selectors.IdSelector; import org.w3c.css.util.ApplContext; +import org.w3c.css.util.CssVersion; import org.w3c.css.util.InvalidParamException; import org.w3c.css.util.Util; import org.w3c.css.util.Warning; @@ -28,6 +30,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.StringReader; import java.lang.reflect.Constructor; import java.net.URL; import java.util.ArrayList; @@ -77,7 +80,7 @@ /** * Adds a vector of properties to a selector. * - * @param selector the selector + * @param selector the selector * @param properties Properties to associate with contexts */ public void handleRule(ApplContext ac, CssSelectors selector, @@ -225,12 +228,24 @@ } } - // TODO this is not OK for CSS3... - // big FIXME here, we should reuse the parser... + // add media, easy version for CSS version < 3, otherwise, reuse the parser private void addMedias(AtRuleMedia m, String medias, ApplContext ac) throws InvalidParamException { - StringTokenizer tokens = new StringTokenizer(medias, ","); - while (tokens.hasMoreTokens()) { - m.addMedia(null, tokens.nextToken().trim(), ac); + // before CSS3, let's parse it the easy way... + if (ac.getCssVersion().compareTo(CssVersion.CSS3) < 0) { + StringTokenizer tokens = new StringTokenizer(medias, ","); + while (tokens.hasMoreTokens()) { + m.addMedia(null, tokens.nextToken().trim(), ac); + } + } else { + CssFouffa muP = new CssFouffa(ac, new StringReader(medias)); + try { + AtRuleMedia arm = muP.parseMediaDeclaration(); + if (arm != null) { + m.allMedia = arm.allMedia; + } + } catch (ParseException pex) { + // error already added, so nothing else to do + } } }
Received on Friday, 21 October 2011 12:52:32 UTC