Example usage for com.google.common.css.compiler.ast CssValueNode toString

List of usage examples for com.google.common.css.compiler.ast CssValueNode toString

Introduction

In this page you can find the example usage for com.google.common.css.compiler.ast CssValueNode toString.

Prototype

@Override
public String toString() 

Source Link

Document

Use for debugging only.

Usage

From source file:com.google.gwt.resources.rg.GssResourceGenerator.java

private boolean writeDefMethod(CssDefinitionNode definitionNode, TreeLogger logger, JMethod userMethod,
        SourceWriter sw) throws UnableToCompleteException {

    String name = userMethod.getName();

    JClassType classReturnType = userMethod.getReturnType().isClass();
    List<CssValueNode> params = definitionNode.getParameters();

    if (params.size() != 1 && !isReturnTypeString(classReturnType)) {
        logger.log(TreeLogger.ERROR,/*from w w w  .ja va2  s. c  om*/
                "@def rule " + name + " must define exactly one value or return type must be String");
        return false;
    }

    String returnExpr;
    if (isReturnTypeString(classReturnType)) {
        List<String> returnValues = new ArrayList<String>();
        for (CssValueNode valueNode : params) {
            returnValues.add(Generator.escape(valueNode.toString()));
        }
        returnExpr = "\"" + Joiner.on(" ").join(returnValues) + "\"";
    } else {
        JPrimitiveType returnType = userMethod.getReturnType().isPrimitive();
        if (returnType == null) {
            logger.log(TreeLogger.ERROR,
                    name + ": Return type must be primitive type " + "or String for @def accessors");
            return false;
        }
        CssValueNode valueNode = params.get(0);
        if (!(valueNode instanceof CssNumericNode)) {
            logger.log(TreeLogger.ERROR,
                    "The value of the constant defined by @" + name + " is not a" + " numeric");
            return false;
        }
        String numericValue = ((CssNumericNode) valueNode).getNumericPart();

        if (returnType == JPrimitiveType.INT || returnType == JPrimitiveType.LONG) {
            returnExpr = "" + Long.parseLong(numericValue);
        } else if (returnType == JPrimitiveType.FLOAT) {
            returnExpr = numericValue + "F";
        } else if (returnType == JPrimitiveType.DOUBLE) {
            returnExpr = "" + numericValue;
        } else {
            logger.log(TreeLogger.ERROR, returnType.getQualifiedSourceName()
                    + " is not a valid primitive return type for @def accessors");
            return false;
        }
    }

    writeSimpleGetter(userMethod, returnExpr, sw);

    return true;
}