- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 04 Sep 2012 08:40:05 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css3 In directory hutz:/tmp/cvs-serv21157/css3 Modified Files: CssLetterSpacing.java Log Message: use CssValueList (so, a real CssValue), bumped to latest draft http://www.w3.org/TR/2012/WD-css3-text-20120814/#letter-spacing0, discovered that the same grammar does not accept the same vales as word-spacing :/ Index: CssLetterSpacing.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/CssLetterSpacing.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- CssLetterSpacing.java 9 Feb 2012 17:36:32 -0000 1.1 +++ CssLetterSpacing.java 4 Sep 2012 08:40:02 -0000 1.2 @@ -4,7 +4,6 @@ // Please first read the full copyright statement in file COPYRIGHT.html package org.w3c.css.properties.css3; -import org.w3c.css.properties.css.CssProperty; import org.w3c.css.util.ApplContext; import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; @@ -13,21 +12,22 @@ import org.w3c.css.values.CssOperator; import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; +import org.w3c.css.values.CssValueList; + +import java.util.ArrayList; /** * @spec http://www.w3.org/TR/2011/WD-css3-text-20110901/#letter-spacing0 */ public class CssLetterSpacing extends org.w3c.css.properties.css.CssLetterSpacing { - private CssValue value[] = new CssValue[3]; - int nb_values; private static CssIdent normal = CssIdent.getIdent("normal"); /** * Create a new CssLetterSpacing. */ public CssLetterSpacing() { - value[0] = normal; + value = initial; } /** @@ -39,48 +39,51 @@ */ public CssLetterSpacing(ApplContext ac, CssExpression expression, boolean check) throws InvalidParamException { - nb_values = expression.getCount(); - - if (check && nb_values > 3) { - throw new InvalidParamException("unrecognize", ac); - } + if (check && expression.getCount() > 3) { + throw new InvalidParamException("unrecognize", ac); + } + setByUser(); - for (int i = 0; i < nb_values; i++) { - CssValue val = expression.getValue(); + ArrayList<CssValue> v = new ArrayList<CssValue>(4); + CssValue val; + char op; - setByUser(); + while (!expression.end()) { + val = expression.getValue(); + op = expression.getOperator(); - switch (val.getType()) { - case CssTypes.CSS_NUMBER: - val = ((CssNumber) val).getLength(); - case CssTypes.CSS_LENGTH: - value[i] = val; - break; - case CssTypes.CSS_PERCENTAGE: - value[i] = val; - break; - case CssTypes.CSS_IDENT: - if (inherit.equals(val)) { - // inherit can only be alone - if (nb_values > 1) { - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - } - value[i] = inherit; - break; - } else if (normal.equals(val)) { - value[i] = normal; - break; - } - default: - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - } - if (i+1 < nb_values && expression.getOperator() != CssOperator.SPACE) { - throw new InvalidParamException("operator", CssOperator.SPACE, ac); - } - expression.next(); - } + switch (val.getType()) { + case CssTypes.CSS_NUMBER: + val = ((CssNumber) val).getLength(); + case CssTypes.CSS_LENGTH: + v.add(val); + break; + case CssTypes.CSS_IDENT: + if (inherit.equals(val)) { + // inherit can only be alone + if (expression.getCount() > 1) { + throw new InvalidParamException("value", expression.getValue(), + getPropertyName(), ac); + } + value = inherit; + break; + } else if (normal.equals(val)) { + v.add(normal); + break; + } + default: + throw new InvalidParamException("value", expression.getValue(), + getPropertyName(), ac); + } + if (op != CssOperator.SPACE) { + throw new InvalidParamException("operator", + ((new Character(op)).toString()), ac); + } + expression.next(); + } + if (value != inherit) { + value = (v.size() == 1) ? v.get(0) : new CssValueList(v); + } } public CssLetterSpacing(ApplContext ac, CssExpression expression) @@ -88,45 +91,4 @@ this(ac, expression, false); } - /** - * Returns the value of this property - */ - public Object get() { - return value; - } - - /** - * Returns true if this property is "softly" inherited - * e.g. his value equals inherit - */ - public boolean isSoftlyInherited() { - return value[0] == inherit; - } - - /** - * Returns a string representation of the object. - */ - public String toString() { - if (nb_values == 1) { - return value[0].toString(); - } - StringBuilder sb = new StringBuilder(); - for (int i=0; i < nb_values; i++) { - if (i > 0) { - sb.append(' '); - } - sb.append(value[i]); - } - return sb.toString(); - } - - /** - * Compares two properties for equality. - * - * @param property The other property. - */ - public boolean equals(CssProperty property) { - return (property instanceof CssLetterSpacing && - value.equals(((CssLetterSpacing) property).value)); - } }
Received on Tuesday, 4 September 2012 08:40:15 UTC