- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 13 Feb 2012 15:48:16 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css2
In directory hutz:/tmp/cvs-serv9215
Modified Files:
CssBackground.java CssBackgroundPosition.java
CssBackgroundRepeat.java CssBackgroundImage.java
Log Message:
fixed background-position parsing when present in 'background' shorthand property, fixed also the array output
Index: CssBackgroundImage.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css2/CssBackgroundImage.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CssBackgroundImage.java 9 Feb 2012 17:36:30 -0000 1.1
+++ CssBackgroundImage.java 13 Feb 2012 15:48:13 -0000 1.2
@@ -13,6 +13,7 @@
import org.w3c.css.util.ApplContext;
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;
@@ -41,6 +42,10 @@
public CssValue url = null;
+ public static boolean checkMatchingIdent(CssIdent ident) {
+ return none.equals(ident);
+ }
+
/**
* Create a new CssBackgroundImage
*/
Index: CssBackgroundRepeat.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css2/CssBackgroundRepeat.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CssBackgroundRepeat.java 9 Feb 2012 17:36:30 -0000 1.1
+++ CssBackgroundRepeat.java 13 Feb 2012 15:48:13 -0000 1.2
@@ -19,32 +19,7 @@
import java.util.HashMap;
/**
- * <H4>
- * <A NAME="background-repeat">5.3.4 'background-repeat'</A>
- * </H4>
- * <p/>
- * <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
- * <EM>Initial:</EM> repeat<BR>
- * <EM>Applies to:</EM> all elements<BR>
- * <EM>Inherited:</EM> no<BR>
- * <EM>Percentage values:</EM> N/A<BR>
- * <p/>
- * If a background image is specified, the value of 'background-repeat' determines
- * how/if the image is repeated.
- * <p/>
- * A value of 'repeat' means that the image is repeated both horizontally and
- * vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
- * (vertically), to create a single band of images from one side to the other.
- * With a value of 'no-repeat', the image is not repeated.
- * <PRE>
- * BODY {
- * background: red url(pendant.gif);
- * background-repeat: repeat-y;
- * }
- * </PRE>
- * <p/>
- * In the example above, the image will only be repeated vertically.
- *
+ * @spec http://www.w3.org/TR/2008/REC-CSS2-20080411/colors.html#propdef-background-repeat
* @version $Revision$
*/
public class CssBackgroundRepeat extends org.w3c.css.properties.css.CssBackgroundRepeat {
Index: CssBackgroundPosition.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css2/CssBackgroundPosition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CssBackgroundPosition.java 9 Feb 2012 17:36:30 -0000 1.1
+++ CssBackgroundPosition.java 13 Feb 2012 15:48:13 -0000 1.2
@@ -156,7 +156,6 @@
}
setByUser();
- setByUser();
CssValue val;
CssBackgroundPositionValue b_val = null;
char op;
Index: CssBackground.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css2/CssBackground.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CssBackground.java 9 Feb 2012 17:36:29 -0000 1.1
+++ CssBackground.java 13 Feb 2012 15:48:11 -0000 1.2
@@ -13,7 +13,8 @@
import org.w3c.css.util.ApplContext;
import org.w3c.css.util.InvalidParamException;
import org.w3c.css.values.CssExpression;
-import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssTypes;
import org.w3c.css.values.CssValue;
import static org.w3c.css.values.CssOperator.SPACE;
@@ -108,8 +109,9 @@
boolean check) throws InvalidParamException {
CssValue val;
- char op;
+ char op = SPACE;
boolean find = true;
+ CssExpression background_position_expression = null;
// too many values
if (check && expression.getCount() > 6) {
@@ -121,79 +123,120 @@
boolean manyValues = (expression.getCount() > 1);
while (find) {
- find = false;
val = expression.getValue();
- op = expression.getOperator();
-
if (val == null) {
break;
}
+ op = expression.getOperator();
- if (inherit.equals(val)) {
- if (manyValues) {
// if there are many values, we can't have inherit as one of them
- throw new InvalidParamException("unrecognize", null, null, ac);
- }
- same = true;
- expression.next();
- // we exit as find is false
- continue;
+ if (manyValues && val.equals(inherit)) {
+ throw new InvalidParamException("unrecognize", null, null, ac);
}
+ switch (val.getType()) {
+ case CssTypes.CSS_STRING:
+ if (check) {
+ throw new InvalidParamException("unrecognize", ac);
+ }
+ find = false;
+ break;
+ case CssTypes.CSS_URL:
+ if (getImage() == null) {
+ setImage(new CssBackgroundImage(ac, expression));
+ continue;
+ }
+ find = false;
+ break;
+ case CssTypes.CSS_COLOR:
+ if (getColor2() == null) {
+ setColor(new CssBackgroundColor(ac, expression));
+ continue;
+ }
+ find = false;
+ break;
+ case CssTypes.CSS_NUMBER:
+ case CssTypes.CSS_PERCENTAGE:
+ case CssTypes.CSS_LENGTH:
+ if (background_position_expression == null) {
+ background_position_expression = new CssExpression();
+ }
+ background_position_expression.addValue(val);
+ expression.next();
+ find = true;
+ break;
+ case CssTypes.CSS_IDENT:
+ // the hard part, as ident can be from different subproperties
+ find = false;
+ CssIdent identval = (CssIdent) val;
+ if (inherit.equals(identval) && !manyValues) {
+ find = true;
+ same = true;
+ expression.next();
+ break;
+ }
+ // check background-image ident
+ if (CssBackgroundImage.checkMatchingIdent(identval)) {
+ if (getImage() == null) {
+ setImage(new CssBackgroundImage(ac, expression));
+ find = true;
+ }
+ break;
+ }
+ // check background-repeat ident
+ if (CssBackgroundRepeat.checkMatchingIdent(identval)) {
+ if (getRepeat() == null) {
+ setRepeat(new CssBackgroundRepeat(ac, expression));
+ find = true;
+ }
+ break;
+ }
+ // check background-attachment ident
+ if (CssBackgroundAttachment.checkMatchingIdent(identval)) {
+ if (getAttachment() == null) {
+ setAttachment(new CssBackgroundAttachment(ac, expression));
+ find = true;
+ }
+ break;
+ }
+ // check background-position ident
+ if (CssBackgroundPosition.checkMatchingIdent(identval)) {
+ if (background_position_expression == null) {
+ background_position_expression = new CssExpression();
+ }
+ background_position_expression.addValue(val);
+ expression.next();
+ find = true;
+ break;
+ }
- // quoted strings are not allowed (CssString)
- if (check && (val instanceof CssString)) {
- throw new InvalidParamException("unrecognize", ac);
- }
+ if (getColor2() == null) {
+ try {
+ setColor(new CssBackgroundColor(ac, expression));
+ find = true;
+ break;
+ } catch (InvalidParamException e) {
+ // nothing to do, image will test this value
+ }
+ }
- if (color == null) {
- try {
- color = new CssBackgroundColor(ac, expression);
- find = true;
- } catch (InvalidParamException e) {
- // nothing to do, image will test this value
- }
- }
- if (!find && image == null) {
- try {
- image = new CssBackgroundImage(ac, expression);
- find = true;
- } catch (InvalidParamException e) {
- // nothing to do, repeat will test this value
- }
- }
- if (!find && repeat == null) {
- try {
- repeat = new CssBackgroundRepeat(ac, expression);
- find = true;
- } catch (InvalidParamException e) {
- // nothing to do, attachment will test this value
- }
- }
- if (!find && attachment == null) {
- try {
- attachment = new CssBackgroundAttachment(ac, expression);
- find = true;
- } catch (InvalidParamException e) {
- // nothing to do, position will test this value
- }
+ default:
+ if (check) {
+ throw new InvalidParamException("unrecognize", ac);
+ }
+ find = false;
}
- if (!find && position == null) {
- try {
- position = new CssBackgroundPosition(ac, expression);
- find = true;
- } catch (InvalidParamException e) {
- // nothing to do
- }
+ if (check && !find) {
+ throw new InvalidParamException("unrecognize", ac);
}
if (op != SPACE) {
throw new InvalidParamException("operator",
- ((new Character(op)).toString()),
+ Character.toString(op),
ac);
}
- if (!find && val != null) {
- throw new InvalidParamException("unrecognize", ac);
- }
+ }
+ if (background_position_expression != null) {
+ setPosition(new CssBackgroundPosition(ac, background_position_expression, check));
}
}
Received on Monday, 13 February 2012 15:48:25 UTC