GWT 2.7.0

com.google.gwt.resources.gss
Class ExternalClassesCollector

java.lang.Object
  extended by com.google.gwt.thirdparty.common.css.compiler.ast.DefaultTreeVisitor
      extended by com.google.gwt.resources.gss.ExternalClassesCollector
All Implemented Interfaces:
com.google.gwt.thirdparty.common.css.compiler.ast.AtRuleHandler, com.google.gwt.thirdparty.common.css.compiler.ast.CssCompilerPass, com.google.gwt.thirdparty.common.css.compiler.ast.CssTreeVisitor

public class ExternalClassesCollector
extends com.google.gwt.thirdparty.common.css.compiler.ast.DefaultTreeVisitor
implements com.google.gwt.thirdparty.common.css.compiler.ast.CssCompilerPass

Compiler pass that collects external styles declared with the @external at-rule.

This pass also removes the @external nodes from the AST.


Field Summary
static java.lang.String EXTERNAL_AT_RULE
           
 
Constructor Summary
ExternalClassesCollector(com.google.gwt.thirdparty.common.css.compiler.ast.MutatingVisitController visitController, com.google.gwt.thirdparty.common.css.compiler.ast.ErrorManager errorManager)
           
 
Method Summary
 boolean enterClassSelector(com.google.gwt.thirdparty.common.css.compiler.ast.CssClassSelectorNode classSelector)
           
 com.google.gwt.thirdparty.guava.common.collect.ImmutableSet<java.lang.String> getExternalClassNames(java.util.Set<java.lang.String> styleClassesSet, java.util.Set<java.lang.String> orphanClassName)
          Returns an immutable set of external class names that should not be renamed.
 void leaveUnknownAtRule(com.google.gwt.thirdparty.common.css.compiler.ast.CssUnknownAtRuleNode node)
           
 void runPass()
           
 
Methods inherited from class com.google.gwt.thirdparty.common.css.compiler.ast.DefaultTreeVisitor
enterArgumentNode, enterAttributeSelector, enterBlock, enterCombinator, enterComponent, enterCompositeValueNode, enterCompositeValueNodeOperator, enterConditionalBlock, enterConditionalRule, enterDeclaration, enterDeclarationBlock, enterDefinition, enterFontFace, enterFunctionNode, enterIdSelector, enterImportBlock, enterImportRule, enterKey, enterKeyBlock, enterKeyframeRuleset, enterKeyframesRule, enterMediaRule, enterMediaTypeListDelimiter, enterMixin, enterMixinDefinition, enterPageRule, enterPageSelector, enterPropertyValue, enterProvideNode, enterPseudoClass, enterPseudoElement, enterRequireNode, enterRuleset, enterSelector, enterSelectorBlock, enterTree, enterUnknownAtRule, enterValueNode, leaveArgumentNode, leaveAttributeSelector, leaveBlock, leaveClassSelector, leaveCombinator, leaveComponent, leaveCompositeValueNode, leaveCompositeValueNodeOperator, leaveConditionalBlock, leaveConditionalRule, leaveDeclaration, leaveDeclarationBlock, leaveDefinition, leaveFontFace, leaveFunctionNode, leaveIdSelector, leaveImportBlock, leaveImportRule, leaveKey, leaveKeyBlock, leaveKeyframeRuleset, leaveKeyframesRule, leaveMediaRule, leaveMediaTypeListDelimiter, leaveMixin, leaveMixinDefinition, leavePageRule, leavePageSelector, leavePropertyValue, leaveProvideNode, leavePseudoClass, leavePseudoElement, leaveRequireNode, leaveRuleset, leaveSelector, leaveSelectorBlock, leaveTree, leaveValueNode, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EXTERNAL_AT_RULE

public static final java.lang.String EXTERNAL_AT_RULE
See Also:
Constant Field Values
Constructor Detail

ExternalClassesCollector

public ExternalClassesCollector(com.google.gwt.thirdparty.common.css.compiler.ast.MutatingVisitController visitController,
                                com.google.gwt.thirdparty.common.css.compiler.ast.ErrorManager errorManager)
Method Detail

runPass

public void runPass()
Specified by:
runPass in interface com.google.gwt.thirdparty.common.css.compiler.ast.CssCompilerPass

enterClassSelector

public boolean enterClassSelector(com.google.gwt.thirdparty.common.css.compiler.ast.CssClassSelectorNode classSelector)
Specified by:
enterClassSelector in interface com.google.gwt.thirdparty.common.css.compiler.ast.CssTreeVisitor
Overrides:
enterClassSelector in class com.google.gwt.thirdparty.common.css.compiler.ast.DefaultTreeVisitor

leaveUnknownAtRule

public void leaveUnknownAtRule(com.google.gwt.thirdparty.common.css.compiler.ast.CssUnknownAtRuleNode node)
Specified by:
leaveUnknownAtRule in interface com.google.gwt.thirdparty.common.css.compiler.ast.AtRuleHandler
Overrides:
leaveUnknownAtRule in class com.google.gwt.thirdparty.common.css.compiler.ast.DefaultTreeVisitor

getExternalClassNames

public com.google.gwt.thirdparty.guava.common.collect.ImmutableSet<java.lang.String> getExternalClassNames(java.util.Set<java.lang.String> styleClassesSet,
                                                                                                           java.util.Set<java.lang.String> orphanClassName)
Returns an immutable set of external class names that should not be renamed. The returned set contains all complete class names defined with @external as well as all of the class names from styleClassesSet that match prefixes defined with @external.

The set will contain also the class names that are not in the AST anymore (defined in a conditional node that has been evaluated to false) and are not associated to a java method. That doesn't make sense to rename these class names because they are not in the final css and javascript. Moreover we handle the case where an @external related to these style classes has been removed from the AST (because it was also defined in a conditional node evaluated to false) and the compiler doesn't have to throw and error for this case.

   /* conditional node evaluated to false at compile time */

Parameters:
styleClassesSet - a set of class names that should be filtered to return those matching external prefixes. Note that the passed-in set is not modified.
orphanClassName - a set of class names that aren't associated to a java method of the CssResource interface.
Returns:
an immutable set of class names. Note that the returned names are not prefixed with "."; they are the raw name.

GWT 2.7.0