/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.common.css.compiler.ast; /** * A handler for at rules. * */ public interface AtRuleHandler { /** * @return {@code true} if the contents of the rule should be visited, * false otherwise. {@link #leaveConditionalRule(CssConditionalRuleNode)} * will still be called. */ boolean enterConditionalRule(CssConditionalRuleNode node); /** Called after visiting a {@code CssConditionalRuleNode}'s sub trees */ void leaveConditionalRule(CssConditionalRuleNode node); /** Called before visiting a {@code CssImportRuleNode}'s sub trees */ boolean enterImportRule(CssImportRuleNode node); /** Called after visiting a {@code CssImportRuleNode}'s sub trees */ void leaveImportRule(CssImportRuleNode node); /** Called before visiting a {@code CssMediaRuleNode}'s sub trees */ boolean enterMediaRule(CssMediaRuleNode node); /** Called after visiting a {@code CssMediaRuleNode}'s sub trees */ void leaveMediaRule(CssMediaRuleNode node); /** Called before visiting a {@code CssPageRuleNode}'s sub trees */ boolean enterPageRule(CssPageRuleNode node); /** Called after visiting a {@code CssPageRuleNode}'s sub trees */ void leavePageRule(CssPageRuleNode node); /** Called before visiting a {@code CssPageSelectorNode}'s sub trees */ boolean enterPageSelector(CssPageSelectorNode node); /** Called after visiting a {@code CssPageSelectorNode}'s sub trees */ void leavePageSelector(CssPageSelectorNode node); /** Called before visiting a {@code CssFontFaceNode}'s sub trees */ boolean enterFontFace(CssFontFaceNode node); /** Called after visiting a {@code CssFontFaceNode}'s sub trees */ void leaveFontFace(CssFontFaceNode node); /** * @return {@code true} if the contents of the rule should be visited, * false otherwise. {@link #leaveDefinition(CssDefinitionNode)} * will still be called. */ boolean enterDefinition(CssDefinitionNode node); /** Called after visiting a {@code CssDefinitionNode}'s sub trees */ void leaveDefinition(CssDefinitionNode node); /** Called before visiting a {@code CssUnknownAtRuleNode}'s sub trees */ boolean enterUnknownAtRule(CssUnknownAtRuleNode node); /** Called after visiting a {@code CssUnknownAtRuleNode}'s sub trees */ void leaveUnknownAtRule(CssUnknownAtRuleNode node); /** Called between adjacent nodes in a media type list */ boolean enterMediaTypeListDelimiter(CssNodesListNode<? extends CssNode> node); /** Called between adjacent nodes in a media type list */ void leaveMediaTypeListDelimiter(CssNodesListNode<? extends CssNode> node); /** Called before visiting a {@code CssComponentNode}'s sub trees */ boolean enterComponent(CssComponentNode node); /** Called after visiting a {@code CssComponentNode}'s sub trees */ void leaveComponent(CssComponentNode node); /** Called before visiting a {@code CssKeyframesNode}'s sub trees */ boolean enterKeyframesRule(CssKeyframesNode node); /** Called after visiting a {@code CssKeyframesNode}'s sub trees */ void leaveKeyframesRule(CssKeyframesNode node); /** Called before visiting a {@code CssMixinDefinitionNode}'s sub trees */ boolean enterMixinDefinition(CssMixinDefinitionNode node); /** Called after visiting a {@code CssMixinDefinitionNode}'s sub trees */ void leaveMixinDefinition(CssMixinDefinitionNode node); /** Called before visiting a {@code CssMixinNode}'s sub trees */ boolean enterMixin(CssMixinNode node); /** Called after visiting a {@code CssMixinNode}'s sub trees */ void leaveMixin(CssMixinNode node); /** Called before visiting a {@code CssProvideNode}'s sub trees */ boolean enterProvideNode(CssProvideNode node); /** Called after visiting a {@code CssProvideNode}'s sub trees */ void leaveProvideNode(CssProvideNode node); /** Called before visiting a {@code CssRequireNode}'s sub trees */ boolean enterRequireNode(CssRequireNode node); /** Called after visiting a {@code CssRequireNode}'s sub trees */ void leaveRequireNode(CssRequireNode node); }