- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 11 Feb 2009 21:41:12 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css1 In directory hutz:/tmp/cvs-serv22264 Modified Files: CssBackgroundConstants.java CssBackgroundImage.java CssBackgroundImageCSS1.java CssBackgroundImageCSS2.java CssBackgroundPositionCSS2.java CssBackgroundRepeatCSS1.java CssBackgroundRepeatCSS2.java Log Message: small rewrites Index: CssBackgroundImageCSS2.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundImageCSS2.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- CssBackgroundImageCSS2.java 25 Mar 2008 18:43:30 -0000 1.4 +++ CssBackgroundImageCSS2.java 11 Feb 2009 21:41:10 -0000 1.5 @@ -37,7 +37,8 @@ * @version $Revision$ */ public class CssBackgroundImageCSS2 extends CssProperty { - CssValue url; + CssValue url = null; + boolean inherited = false; public static CssIdent none; private static final String property_name = "background-image"; @@ -83,7 +84,7 @@ break; } if (none.equals(val)) { - url = none; + inherited = true; break; } default: @@ -110,16 +111,16 @@ * e.g. his value equals inherit */ public boolean isSoftlyInherited() { - if (url != null) { - return inherit.equals(url); - } - return false; + return inherited; } /** * Returns a string representation of the object. */ public String toString() { + if (inherited) { + return inherit.toString(); + } if (url != null) { return url.toString(); } Index: CssBackgroundRepeatCSS2.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundRepeatCSS2.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- CssBackgroundRepeatCSS2.java 25 Mar 2008 18:43:30 -0000 1.4 +++ CssBackgroundRepeatCSS2.java 11 Feb 2009 21:41:10 -0000 1.5 @@ -11,6 +11,7 @@ import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; /** @@ -44,6 +45,8 @@ public class CssBackgroundRepeatCSS2 extends CssProperty implements CssBackgroundConstants { + private static final String property_name = "background-repeat"; + int repeat; private static int[] hash_values; @@ -70,7 +73,7 @@ CssValue val = expression.getValue(); setByUser(); - if (val instanceof CssIdent) { + if (val.getType() == CssTypes.CSS_IDENT) { int hash = val.hashCode(); for (int i =0; i < REPEAT.length; i++) { if (hash_values[i] == hash) { @@ -80,7 +83,6 @@ } } } - throw new InvalidParamException("value", expression.getValue(), getPropertyName(), ac); } @@ -102,7 +104,7 @@ * e.g. his value equals inherit */ public boolean isSoftlyInherited() { - return repeat == 4; + return (repeat == 4); } /** @@ -116,7 +118,7 @@ * Returns the name of this property */ public String getPropertyName() { - return "background-repeat"; + return property_name; } /** Index: CssBackgroundConstants.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundConstants.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundConstants.java 14 Sep 2005 15:14:31 -0000 1.3 +++ CssBackgroundConstants.java 11 Feb 2009 21:41:10 -0000 1.4 @@ -11,10 +11,10 @@ */ public interface CssBackgroundConstants { static String[] REPEAT = { "repeat", "repeat-x", "repeat-y", "no-repeat", "inherit" }; - + static String[] ATTACHMENT = { "scroll", "fixed", "inherit" }; - static String[] ATTACHMENTMOB = { "scroll", "inherit" }; - + static String[] ATTACHMENTMOB = { "scroll", "inherit" }; + static String[] POSITION = { "top", "center", "bottom", "left", "right", "inherit" }; /** Index: CssBackgroundImage.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundImage.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundImage.java 14 Sep 2005 15:14:31 -0000 1.3 +++ CssBackgroundImage.java 11 Feb 2009 21:41:10 -0000 1.4 @@ -12,6 +12,7 @@ import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssURL; import org.w3c.css.values.CssValue; @@ -36,7 +37,8 @@ * @version $Revision$ */ public class CssBackgroundImage extends CssProperty { - CssValue url; + CssValue url = null ; + boolean inherited = false; private static CssIdent none = new CssIdent("none"); @@ -63,19 +65,24 @@ setByUser(); CssValue val = expression.getValue(); - if (val instanceof CssURL) { + + switch(val.getType()) { + case CssTypes.CSS_URL: url = val; - expression.next(); - } else if (val.equals(inherit)) { - url = inherit; - expression.next(); - } else if (val.equals(none)) { - url = none; - expression.next(); - } else { - throw new InvalidParamException("value", expression.getValue(), + break; + case CssTypes.CSS_IDENT: + if (inherit.equals(val)) { + inherited = true; + break; + } else if (none.equals(val)) { + url = none; + break; + } + default: + throw new InvalidParamException("value", val, getPropertyName(), ac); } + expression.next(); } public CssBackgroundImage(ApplContext ac, CssExpression expression) @@ -95,16 +102,16 @@ * e.g. his value equals inherit */ public boolean isSoftlyInherited() { - if (url != null) { - return url.equals(inherit); - } - return false; + return inherited; } /** * Returns a string representation of the object. */ public String toString() { + if (inherited) { + return inherit.toString(); + } if (url != null) { return url.toString(); } Index: CssBackgroundPositionCSS2.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundPositionCSS2.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- CssBackgroundPositionCSS2.java 25 Mar 2008 18:43:30 -0000 1.8 +++ CssBackgroundPositionCSS2.java 11 Feb 2009 21:41:10 -0000 1.9 @@ -13,9 +13,9 @@ import org.w3c.css.values.CssIdent; import org.w3c.css.values.CssLength; import org.w3c.css.values.CssNumber; -//import org.w3c.css.values.CssNumber; import org.w3c.css.values.CssOperator; import org.w3c.css.values.CssPercentage; +import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; /** @@ -65,7 +65,8 @@ * <LI> * 'bottom left' and 'left bottom' mean the same as '0% 100%'. * <LI> - * 'bottom', 'bottom center' and 'center bottom' mean the same as '50% 100%'. + * 'bottom', 'bottom center' and 'center bottom' mean the same as + '50% 100%'. * <LI> * 'bottom right' and 'right bottom' mean the same as '100% 100%'. * </UL> @@ -104,7 +105,7 @@ * Create a new CssBackgroundPositionCSS2 */ public CssBackgroundPositionCSS2() { - first = DefaultValue0; + first = DefaultValue0; second = DefaultValue0; } @@ -117,213 +118,133 @@ public CssBackgroundPositionCSS2(ApplContext ac, CssExpression expression, boolean check) throws InvalidParamException { - if(check && expression.getCount() > 2) { + int nb_val = expression.getCount(); + boolean first_is_keyword, second_is_keyword; + int index_first, index_second; + + if(check && nb_val > 2) { throw new InvalidParamException("unrecognize", ac); } setByUser(); - CssValue val = expression.getValue(); - char op = expression.getOperator(); + CssValue nextval; + CssValue val = expression.getValue(); + char op = expression.getOperator(); if (op != SPACE) throw new InvalidParamException("operator", ((new Character(op)).toString()), ac); - - if (val.equals(inherit)) { - if(expression.getCount() > 1) { - throw new InvalidParamException("unrecognize", ac); - } - first = inherit; - second = inherit; - expression.next(); - return; + + if (nb_val == 1) { /* default to 'center' */ + second_is_keyword = true; + second = null; } - CssValue next = expression.getNextValue(); + index_first = -1; + index_second = -1; - if(val instanceof CssIdent) { - int index1 = IndexOfIdent((String) val.get()); - if(index1 == -1) { - throw new InvalidParamException("value", val, "background-position", ac); - } - // two keywords - if(next instanceof CssIdent) { - int index2 = IndexOfIdent((String) next.get()); - if(index2 == -1 && check) { - throw new InvalidParamException("value", next, "background-position", ac); - } - // one is vertical, the other is horizontal - // or the two are 'center' - if((isHorizontal(index1) && isVertical(index2)) || - (isHorizontal(index2) && isVertical(index1))) { - first = val; - second = next; - } - // both are horizontal or vertical but not 'center' - else if(check){ - throw new InvalidParamException("incompatible", - val, next, ac); - } - else { - first = val; - } - } - // a keyword and a percentage/length - else if(next instanceof CssLength || next instanceof CssPercentage - || next instanceof CssNumber) { - if(isHorizontal(index1)) { - if(next instanceof CssNumber) { - next = ((CssNumber) next).getLength(); - } - setFirst(val); - setSecond(next); - } - // if the keyword is the first value, it can only be an - // horizontal one - else { - throw new InvalidParamException("incompatible", - val, next, ac); + first = null; + switch(val.getType()) { + case CssTypes.CSS_IDENT: + /* check for inherit, only one value allowed */ + if (inherit.equals(val)) { + if(nb_val > 1) { + throw new InvalidParamException("unrecognize", ac); } + first = inherit; + second = inherit; + expression.next(); + return; } - // only one value - else if(next == null || !check) { - first = val; - } - // the second value is invalid - else if(check) { - throw new InvalidParamException("value", next, - getPropertyName(), ac); + first_is_keyword = true; + // FIXME do something better + index_first = IndexOfIdent((String) val.get()); + if(index_first == -1) { + throw new InvalidParamException("value", val, + "background-position", ac); } + first = val; + break; + case CssTypes.CSS_NUMBER: + val = ((CssNumber) val).getLength(); + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_LENGTH: + first_is_keyword = false; + first = val; + break; + default: + throw new InvalidParamException("value", val, + "background-position", ac); } - else if(val instanceof CssLength || val instanceof CssPercentage || - val instanceof CssNumber) { - if(val instanceof CssNumber) { - val = ((CssNumber) val).getLength(); - } - if(next instanceof CssIdent) { - int index = IndexOfIdent((String) next.get()); - if(check && index == -1) { - throw new InvalidParamException("value", next, "background-position", ac); - } - // the keyword must be a vertical one - if(isVertical(index)) { - setFirst(val); - setSecond(next); - } - else if(check) { - throw new InvalidParamException("incompatible", - val, next, ac); - } - else { - setFirst(val); - } - } - else if(next instanceof CssLength || next instanceof CssPercentage - || next instanceof CssNumber) { - if(next instanceof CssNumber) { - next = ((CssNumber) next).getLength(); - } - first = val; - second = next; + if (nb_val == 1) { + if (first != null) { + expression.next(); } - else if(next == null || !check) { - first = val; + return; + } + /* now check the second value */ + nextval = expression.getNextValue(); + second = null; + switch(nextval.getType()) { + case CssTypes.CSS_IDENT: + if (inherit.equals(nextval)) { + throw new InvalidParamException("unrecognize", ac); } - else { - throw new InvalidParamException("incompatible", val, next, ac); + index_second = IndexOfIdent((String) nextval.get()); + if(index_second == -1 && check) { + throw new InvalidParamException("value", nextval, + "background-position", ac); } - } - else if(check) { - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - } - - // we only move the cursor if we found valid values - if(first != null) { - expression.next(); - } - if(second != null) { - expression.next(); - } - /* - else if (val instanceof CssIdent - && (index=IndexOfIdent((String) val.get())) != INVALID) { - CssValue next = expression.getNextValue(); - expression.next(); - if (next == null) { - getPercentageFromIdent(index, INVALID); - } else if(next instanceof CssIdent) { - int index2 = IndexOfIdent((String) next.get()); - if(next != null && next.equals(inherit)) { - throw new InvalidParamException("unrecognize", ac); - } - if (index2 != INVALID) { - getPercentageFromIdent(index, index2); - expression.next(); + if (first_is_keyword) { + // two keywords, check that they are compatible + if((isHorizontal(index_first) && isVertical(index_second)) || + (isHorizontal(index_second) && isVertical(index_first))) { + second = nextval; } else { - getPercentageFromIdent(index, INVALID); - } - } - else if (next instanceof CssLength || - next instanceof CssPercentage || next instanceof CssNumber) { - if (next instanceof CssNumber) { - next = ((CssNumber) next).getLength(); - } - if(index == POSITION_LEFT || index == POSITION_RIGHT || - index == POSITION_CENTER) { - vertical = next; - } - else { - throw new InvalidParamException("incompatible", val , - next , ac); + if (check) { + throw new InvalidParamException("incompatible", + val, nextval, ac); + } } - expression.next(); - } - else { - throw new InvalidParamException("incompatible", val , - next , ac); + } else { + // first was not a keyword, so second should be vertical + // http://www.w3.org/TR/CSS21/colors.html#propdef-background-position + if (isVertical(index_second)) { + second = nextval; + } else { + // FIXME, should we create a better error msg, like "wrong order" ? + if (check) { + throw new InvalidParamException("incompatible", + val, nextval, ac); + } + } } - } else if (val instanceof CssLength || - val instanceof CssPercentage || val instanceof CssNumber) { - if (val instanceof CssNumber) { - val = ((CssNumber) val).getLength(); + break; + case CssTypes.CSS_NUMBER: + nextval = ((CssNumber) nextval).getLength(); + case CssTypes.CSS_PERCENTAGE: + case CssTypes.CSS_LENGTH: + if (first_is_keyword) { + // check that the first is indeed horizontal + // http://www.w3.org/TR/CSS21/colors.html#propdef-background-position + if (!isHorizontal(index_first) && check) { + throw new InvalidParamException("incompatible", + val, nextval, ac); + } } - horizontal = val; + second = nextval; + break; + default: + throw new InvalidParamException("value", nextval, + "background-position", ac); + } + if (first != null) { expression.next(); - CssValue next = expression.getValue(); - if(next != null && next.equals(inherit)) { - throw new InvalidParamException("unrecognize", ac); - } - System.out.println(next); - if (next instanceof CssLength || - next instanceof CssPercentage || next instanceof CssNumber) { - if (next instanceof CssNumber) { - next = ((CssNumber) next).getLength(); - } - vertical = next; + if (second != null) { expression.next(); } - else if(next instanceof CssIdent) { - int index2 = IndexOfIdent((String) next.get()); - if(index2 == POSITION_TOP || index2 == POSITION_BOTTOM || - index2 == POSITION_CENTER) { - getPercentageFromIdent(INVALID, index2); - horizontal = val; - } - else { - throw new InvalidParamException("incompatible", - horizontal, next, ac); - } - } - else if(next != null) { - throw new InvalidParamException("incompatible", - horizontal, val, ac); - } - } else { - throw new InvalidParamException("value", expression.getValue(), - getPropertyName(), ac); - }*/ + } } protected boolean isHorizontal(int index) { @@ -412,34 +333,20 @@ if (first == inherit) { return inherit.toString(); } else { - String ret = ""; + StringBuilder sb = new StringBuilder(); if (first != null) { - ret += first; + sb.append(first); } if (second != null) { - if (!ret.equals("")) { - ret += " "; + if (first != null) { + sb.append(' '); } - ret += second; + sb.append(second); } - - return ret; + return sb.toString(); } } - /* - private void getPercentageFromIdent(int first, int second) { - horizontal = DefaultValue50; - vertical = DefaultValue50; - if (first == POSITION_LEFT || second == POSITION_LEFT) - horizontal = DefaultValue0; - if (first == POSITION_RIGHT || second == POSITION_RIGHT) - horizontal = DefaultValue100; - if (first == POSITION_TOP || second == POSITION_TOP) - vertical = DefaultValue0; - if (first == POSITION_BOTTOM || second == POSITION_BOTTOM) - vertical = DefaultValue100; - } - */ + /** * Add this property to the CssStyle. * @@ -472,9 +379,11 @@ * @param value The other property. */ public boolean equals(CssProperty property) { - return (property instanceof CssBackgroundPositionCSS2 && - first.equals(((CssBackgroundPositionCSS2) property).first) - && second.equals(((CssBackgroundPositionCSS2) property).second)); + if (!(property instanceof CssBackgroundPositionCSS2)) { + return false; + } + CssBackgroundPositionCSS2 cprop = (CssBackgroundPositionCSS2) property; + return (first.equals(cprop.first) && second.equals(cprop.second)); } /** @@ -504,10 +413,7 @@ private static int[] hash_values; - //private static int INVALID = -1; private static CssPercentage DefaultValue0 = new CssPercentage(0); - //private static CssPercentage DefaultValue50 = new CssPercentage(50); - //private static CssPercentage DefaultValue100 = new CssPercentage(100); static { hash_values = new int[POSITION.length]; Index: CssBackgroundRepeatCSS1.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundRepeatCSS1.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundRepeatCSS1.java 14 Sep 2005 15:14:31 -0000 1.3 +++ CssBackgroundRepeatCSS1.java 11 Feb 2009 21:41:10 -0000 1.4 @@ -11,6 +11,7 @@ import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssValue; /** @@ -44,7 +45,9 @@ public class CssBackgroundRepeatCSS1 extends CssProperty implements CssBackgroundConstants { - int repeat; + private static final String property_name = "background-repeat"; + + int repeat; private static int[] hash_values; @@ -70,7 +73,7 @@ CssValue val = expression.getValue(); setByUser(); - if (val instanceof CssIdent) { + if (val.getType() == CssTypes.CSS_IDENT) { int hash = val.hashCode(); for (int i =0; i < REPEAT.length; i++) { if (hash_values[i] == hash) { @@ -116,7 +119,7 @@ * Returns the name of this property */ public String getPropertyName() { - return "background-repeat"; + return property_name; } /** Index: CssBackgroundImageCSS1.java =================================================================== RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css1/CssBackgroundImageCSS1.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- CssBackgroundImageCSS1.java 14 Sep 2005 15:14:31 -0000 1.3 +++ CssBackgroundImageCSS1.java 11 Feb 2009 21:41:10 -0000 1.4 @@ -12,6 +12,7 @@ import org.w3c.css.util.InvalidParamException; import org.w3c.css.values.CssExpression; import org.w3c.css.values.CssIdent; +import org.w3c.css.values.CssTypes; import org.w3c.css.values.CssURL; import org.w3c.css.values.CssValue; @@ -36,7 +37,8 @@ * @version $Revision$ */ public class CssBackgroundImageCSS1 extends CssProperty { - CssValue url; + CssValue url = null; + boolean inherited = false; private static CssIdent none = new CssIdent("none"); @@ -63,16 +65,24 @@ setByUser(); CssValue val = expression.getValue(); - if (val instanceof CssURL) { + + switch(val.getType()) { + case CssTypes.CSS_URL: url = val; - expression.next(); - } else if (val.equals(none)) { - url = none; - expression.next(); - } else { - throw new InvalidParamException("value", expression.getValue(), + break; + case CssTypes.CSS_IDENT: + if (inherit.equals(val)) { + inherited = true; + break; + } else if (none.equals(val)) { + url = none; + break; + } + default: + throw new InvalidParamException("value", val, getPropertyName(), ac); } + expression.next(); } public CssBackgroundImageCSS1(ApplContext ac, CssExpression expression) @@ -92,16 +102,16 @@ * e.g. his value equals inherit */ public boolean isSoftlyInherited() { - if (url != null) { - return url.equals(inherit); - } - return false; + return inherited; } /** * Returns a string representation of the object. */ public String toString() { + if (inherited) { + return inherit.toString(); + } if (url != null) { return url.toString(); }
Received on Wednesday, 11 February 2009 21:41:21 UTC