Example usage for com.google.common.css.compiler.ast CssTree getVisitController

List of usage examples for com.google.common.css.compiler.ast CssTree getVisitController

Introduction

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

Prototype

public VisitController getVisitController() 

Source Link

Usage

From source file:com.log4ic.compressor.utils.Compressor.java

public static String parseGss(JobDescription job) throws GssParserException {
    logger.debug("?GSS...");
    try {// w  ww.  j  a  v a 2 s.  c o m
        GssParser parser = new GssParser(job.inputs);
        CssTree cssTree = parser.parse();
        CompilerErrorManager errorManager = new CompilerErrorManager();
        PassRunner passRunner = new ExtendedPassRunner(job, errorManager);
        passRunner.runPasses(cssTree);
        PrettyPrinter prettyPrinterPass = new PrettyPrinter(cssTree.getVisitController());
        prettyPrinterPass.runPass();
        return prettyPrinterPass.getPrettyPrintedString();
    } finally {
        logger.debug("?GSS...");
    }
}

From source file:io.bazel.rules.closure.webfiles.WebfilesValidator.java

private void validateCss(final Path path, final Webpath origin, String source) {
    CssTree stylesheet = cssParser.parse(path.toString(), source);
    new PassRunner(new JobDescriptionBuilder().getJobDescription(), new BasicErrorManager() {
        @Override//from w w  w. j  a v a2s .  c o  m
        public void print(String message) {
            WebfilesValidator.this.errors.put(CSS_VALIDATION_ERROR, String.format("%s: %s", path, message));
        }
    }).runPasses(stylesheet);
    stylesheet.getVisitController().startVisit(new DefaultTreeVisitor() {
        private boolean inUrlFunction;

        @Override
        public boolean enterFunctionNode(CssFunctionNode function) {
            return (inUrlFunction = function.getFunction().getFunctionName().equals("url"));
        }

        @Override
        public void leaveFunctionNode(CssFunctionNode value) {
            inUrlFunction = false;
        }

        @Override
        public boolean enterArgumentNode(CssValueNode argument) {
            if (inUrlFunction) {
                String uri = nullToEmpty(argument.getValue());
                if (!shouldIgnoreUri(uri)) {
                    addRelationship(path, origin, Webpath.get(uri));
                }
            }
            return false;
        }
    });
}

From source file:com.log4ic.compressor.utils.Compressor.java

/**
 * css/*  www .j  av  a  2  s  . c o  m*/
 *
 * @param job
 * @return
 * @throws GssParserException
 */
public static String compressGss(JobDescription job) throws GssParserException {
    logger.debug("CSS...");
    try {
        GssParser parser = new GssParser(job.inputs);
        CssTree cssTree = parser.parse();
        if (job.outputFormat != JobDescription.OutputFormat.DEBUG) {
            CompilerErrorManager errorManager = new CompilerErrorManager();
            PassRunner passRunner = new ExtendedPassRunner(job, errorManager);
            passRunner.runPasses(cssTree);
        }

        if (job.outputFormat == JobDescription.OutputFormat.COMPRESSED) {
            CompactPrinter compactPrinterPass = new CompactPrinter(cssTree);
            compactPrinterPass.runPass();
            return compactPrinterPass.getCompactPrintedString();
        } else {
            PrettyPrinter prettyPrinterPass = new PrettyPrinter(cssTree.getVisitController());
            prettyPrinterPass.runPass();
            return prettyPrinterPass.getPrettyPrintedString();
        }
    } finally {
        logger.debug("CSS...");
    }
}

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

private OptimizationInfo optimize(ExtendedCssTree extendedCssTree, ResourceContext context, boolean simplifyCss,
        boolean eliminateDeadStyles) throws UnableToCompleteException {
    CssTree cssTree = extendedCssTree.getCssTree();

    // Collect mixin definitions and replace mixins
    CollectMixinDefinitions collectMixinDefinitions = new CollectMixinDefinitions(
            cssTree.getMutatingVisitController(), errorManager);
    collectMixinDefinitions.runPass();/*ww  w. j  ava2  s. co  m*/
    new ReplaceMixins(cssTree.getMutatingVisitController(), errorManager,
            collectMixinDefinitions.getDefinitions()).runPass();

    new ProcessComponents<Object>(cssTree.getMutatingVisitController(), errorManager).runPass();

    RuntimeConditionalNodeCollector runtimeConditionalNodeCollector = new RuntimeConditionalNodeCollector(
            cssTree.getVisitController());
    runtimeConditionalNodeCollector.runPass();

    new ExtendedEliminateConditionalNodes(cssTree.getMutatingVisitController(),
            getPermutationsConditions(context, extendedCssTree.getPermutationAxes()),
            runtimeConditionalNodeCollector.getRuntimeConditionalNodes()).runPass();

    new DisallowDefInsideRuntimeConditionalNode(cssTree.getVisitController(), errorManager).runPass();

    // Don't continue if errors exist
    checkErrors();

    CollectConstantDefinitions collectConstantDefinitionsPass = new CollectConstantDefinitions(cssTree);
    collectConstantDefinitionsPass.runPass();

    ReplaceConstantReferences replaceConstantReferences = new ReplaceConstantReferences(cssTree,
            collectConstantDefinitionsPass.getConstantDefinitions(), true, errorManager, false);
    replaceConstantReferences.runPass();

    new ImageSpriteCreator(cssTree.getMutatingVisitController(), context, errorManager).runPass();

    Map<String, GssFunction> gssFunctionMap = new GwtGssFunctionMapProvider(context).get();
    new ResolveCustomFunctionNodes(cssTree.getMutatingVisitController(), errorManager, gssFunctionMap, true,
            allowedNonStandardFunctions).runPass();

    if (simplifyCss) {
        // Eliminate empty rules.
        new EliminateEmptyRulesetNodes(cssTree.getMutatingVisitController()).runPass();
        // Eliminating units for zero values.
        new EliminateUnitsFromZeroNumericValues(cssTree.getMutatingVisitController()).runPass();
        // Optimize color values.
        new ColorValueOptimizer(cssTree.getMutatingVisitController()).runPass();
        // Compress redundant top-right-bottom-left value lists.
        new AbbreviatePositionalValues(cssTree.getMutatingVisitController()).runPass();
    }

    if (eliminateDeadStyles) {
        // Report errors for duplicate declarations
        new DisallowDuplicateDeclarations(cssTree.getVisitController(), errorManager).runPass();
        // Split rules by selector and declaration.
        new SplitRulesetNodes(cssTree.getMutatingVisitController()).runPass();
        // Dead code elimination.
        new MarkRemovableRulesetNodes(cssTree).runPass();
        new EliminateUselessRulesetNodes(cssTree).runPass();
        // Merge of rules with same selector.
        new MergeAdjacentRulesetNodesWithSameSelector(cssTree).runPass();
        new EliminateUselessRulesetNodes(cssTree).runPass();
        // Merge of rules with same styles.
        new MergeAdjacentRulesetNodesWithSameDeclarations(cssTree).runPass();
        new EliminateUselessRulesetNodes(cssTree).runPass();
    }

    return new OptimizationInfo(collectConstantDefinitionsPass.getConstantDefinitions());
}