- From: Yves Lafon via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 08 Oct 2012 07:20:50 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2002/css-validator/org/w3c/css/properties/css3
In directory hutz:/tmp/cvs-serv31803/css3
Modified Files:
Css3Style.java CssFlexBasis.java
Added Files:
CssFlex.java
Log Message:
added flex per http://www.w3.org/TR/2012/CR-css3-flexbox-20120918/#flex
Index: CssFlexBasis.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/CssFlexBasis.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CssFlexBasis.java 7 Oct 2012 14:45:52 -0000 1.1
+++ CssFlexBasis.java 8 Oct 2012 07:20:48 -0000 1.2
@@ -22,6 +22,13 @@
public static final CssIdent auto = CssIdent.getIdent("auto");
+ public static final CssIdent getAllowedIdent(CssIdent ident) {
+ if (auto.equals(ident)) {
+ return auto;
+ }
+ return null;
+ }
+
/**
* Create a new CssFlexBasis
*/
--- NEW FILE: CssFlex.java ---
// $Id: CssFlex.java,v 1.1 2012/10/08 07:20:48 ylafon Exp $
// Author: Yves Lafon <ylafon@w3.org>
//
// (c) COPYRIGHT MIT, ERCIM and Keio University, 2012.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.css.properties.css3;
import org.w3c.css.parser.CssStyle;
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.CssLength;
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;
import org.w3c.css.values.CssValueList;
import java.math.BigDecimal;
/**
* @spec http://www.w3.org/TR/2012/CR-css3-flexbox-20120918/#flex
*/
public class CssFlex extends org.w3c.css.properties.css.CssFlexFlow {
private CssFlexGrow flexGrow;
private CssFlexShrink flexShrink;
private CssFlexBasis flexBasis;
/**
* Create a new CssFlexFlow
*/
public CssFlex() {
value = initial;
flexGrow = new CssFlexGrow();
flexShrink = new CssFlexShrink();
flexBasis = new CssFlexBasis();
}
/**
* Creates a new CssFlexFlow
*
* @param expression The expression for this property
* @throws org.w3c.css.util.InvalidParamException
* Expressions are incorrect
*/
public CssFlex(ApplContext ac, CssExpression expression, boolean check)
throws InvalidParamException {
if (check && expression.getCount() > 3) {
throw new InvalidParamException("unrecognize", ac);
}
setByUser();
CssValue growVal = null;
CssValue shrinkVal = null;
CssValue basisVal = null;
CssValue val;
char op;
boolean gotNumber = false;
while (!expression.end()) {
val = expression.getValue();
op = expression.getOperator();
switch (val.getType()) {
case CssTypes.CSS_IDENT:
CssIdent ident = (CssIdent) val;
if (inherit.equals(ident)) {
value = inherit;
if (expression.getCount() > 1) {
throw new InvalidParamException("value",
val.toString(),
getPropertyName(), ac);
}
break;
}
if (none.equals(ident)) {
value = none;
if (expression.getCount() > 1) {
throw new InvalidParamException("value",
val.toString(),
getPropertyName(), ac);
}
break;
}
if (basisVal == null) {
basisVal = CssFlexBasis.getAllowedIdent(ident);
if (basisVal == null) {
throw new InvalidParamException("value",
val.toString(),
getPropertyName(), ac);
}
gotNumber = false;
break;
}
// unrecognized token...
throw new InvalidParamException("value",
val.toString(),
getPropertyName(), ac);
case CssTypes.CSS_NUMBER:
if (growVal == null) {
CssNumber num = val.getNumber();
num.checkPositiveness(ac, this);
growVal = val;
gotNumber = true;
break;
}
// we can get shrink only after grow
if (gotNumber && shrinkVal == null) {
CssNumber num = val.getNumber();
num.checkPositiveness(ac, this);
shrinkVal = val;
break;
}
// we got too many number -> fail if not zero...
// which happens only of basisVal is null
// and we get a length, so val = 0
// otherwise it will either fail or flow to default:
case CssTypes.CSS_LENGTH:
if (basisVal == null) {
CssLength l = val.getLength();
l.checkPositiveness(ac, this);
basisVal = l;
break;
}
case CssTypes.CSS_PERCENTAGE:
if (basisVal == null) {
CssPercentage p = val.getPercentage();
p.checkPositiveness(ac, this);
basisVal = p;
break;
}
default:
throw new InvalidParamException("value",
val.toString(),
getPropertyName(), ac);
}
if (op != CssOperator.SPACE) {
throw new InvalidParamException("operator",
((new Character(op)).toString()), ac);
}
expression.next();
}
// for addToStyle, redefinitions and equality check
flexBasis = new CssFlexBasis();
flexGrow = new CssFlexGrow();
flexShrink = new CssFlexShrink();
if (value == inherit) {
flexBasis.value = inherit;
flexGrow.value = inherit;
flexShrink.value = inherit;
} else if (value == none) {
flexBasis.value = CssFlexBasis.auto;
CssNumber z = new CssNumber();
z.setValue(BigDecimal.ZERO);
flexGrow.value = z;
flexShrink.value = z;
} else {
CssValueList v = new CssValueList();
if (growVal != null) {
v.add(growVal);
flexGrow.value = growVal;
if (shrinkVal != null) {
v.add(shrinkVal);
flexShrink.value = shrinkVal;
}
}
if (basisVal != null) {
v.add(basisVal);
flexBasis.value = basisVal;
}
value = v;
}
}
public CssFlex(ApplContext ac, CssExpression expression)
throws InvalidParamException {
this(ac, expression, false);
}
/**
* Add this property to the CssStyle.
*
* @param style The CssStyle
*/
public void addToStyle(ApplContext ac, CssStyle style) {
super.addToStyle(ac, style);
flexBasis.addToStyle(ac, style);
flexGrow.addToStyle(ac, style);
flexShrink.addToStyle(ac, style);
}
}
Index: Css3Style.java
===================================================================
RCS file: /sources/public/2002/css-validator/org/w3c/css/properties/css3/Css3Style.java,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -d -r1.110 -r1.111
--- Css3Style.java 7 Oct 2012 14:45:52 -0000 1.110
+++ Css3Style.java 8 Oct 2012 07:20:48 -0000 1.111
@@ -32,6 +32,7 @@
import org.w3c.css.properties.css.CssColumnSpan;
import org.w3c.css.properties.css.CssColumnWidth;
import org.w3c.css.properties.css.CssColumns;
+import org.w3c.css.properties.css.CssFlex;
import org.w3c.css.properties.css.CssFlexBasis;
import org.w3c.css.properties.css.CssFlexDirection;
import org.w3c.css.properties.css.CssFlexFlow;
@@ -162,6 +163,7 @@
public CssAlignContent cssAlignContent;
public CssAlignItems cssAlignItems;
public CssAlignSelf cssAlignSelf;
+ public CssFlex cssFlex;
public CssFlexBasis cssFlexBasis;
public CssFlexDirection cssFlexDirection;
public CssFlexWrap cssFlexWrap;
@@ -1175,6 +1177,15 @@
return cssAlignSelf;
}
+ public CssFlex getFlex() {
+ if (cssFlex == null) {
+ cssFlex =
+ (CssFlex) style.CascadingOrder(
+ new CssFlex(), style, selector);
+ }
+ return cssFlex;
+ }
+
public CssFlexBasis getFlexBasis() {
if (cssFlexBasis == null) {
cssFlexBasis =
Received on Monday, 8 October 2012 07:20:52 UTC