List of usage examples for com.google.common.css.compiler.ast CssTree getVisitController
public VisitController getVisitController()
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()); }