public static ValueExpression eval ( CssFormatter formatter , Expression expr ) { expr = expr . unpack ( formatter ) ; // unpack to increase the chance to find a ValueExpression if ( expr . getClass ( ) == ValueExpression . class ) { return ( ValueExpression ) expr ; } ValueExpression valueEx = new ValueExpression ( expr , expr . stringValue ( formatter ) ) ; valueEx . type = expr . getDataType ( formatter ) ; valueEx . unit = expr . unit ( formatter ) ; switch ( valueEx . type ) { case STRING : case BOOLEAN : break ; //string is already set case LIST : Operation op = valueEx . op = new Operation ( expr , ' ' ) ; ArrayList < Expression > operants = expr . listValue ( formatter ) . getOperands ( ) ; for ( int j = 0 ; j < operants . size ( ) ; j ++ ) { op . addOperand ( ValueExpression . eval ( formatter , operants . get ( j ) ) ) ; } break ; default : valueEx . value = expr . doubleValue ( formatter ) ; } return valueEx ; }
Create a value expression as parameter for a mixin which not change it value in a different context .