All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.common.css.compiler.ast.CssParserEventHandler Maven / Gradle / Ivy

Go to download

Closure Stylesheets is an extension to CSS that adds variables, functions, conditionals, and mixins to standard CSS. The tool also supports minification, linting, RTL flipping, and CSS class renaming.

The newest version!
/*
 * 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;

import com.google.common.css.SourceCode;

/**
 * A handler for parse events in the spirit of SAC and SAX.
 *
 */
// TODO(user): Perhaps rename these to *Listener, as *Handler is a bit
//     inappropriate.
public interface CssParserEventHandler {

  void onDocumentStart(SourceCode sourceCode);
  void onDocumentEnd();

  // TODO(user): This should return a SelectorsListBuilder, similar to what
  //     onDeclarationStart does.
  void onRulesetStart(CssSelectorListNode selectorList);
  void onRulesetEnd();

  void onCommentStart(ParserToken comment);
  void onCommentEnd();

  /**
   * Builds an expression.
   */
  public interface ExpressionHandler {
    // TODO(oana): Maybe change the parameters into something like
    //     ParserToken operator and CssValueNode term.
    void onLiteral(ParserToken expression);
    void onOperator(ParserToken expression);
    void onPriority(ParserToken priority);
    void onColor(ParserToken color);
    void onNumericValue(ParserToken numericValue, ParserToken unit);
    void onReference(ParserToken reference);
    void onFunction(ParserToken constant);
    void onFunctionArgument(ParserToken term);
    void onReferenceFunctionArgument(ParserToken term);

  }
  ExpressionHandler onDeclarationStart(ParserToken propertyName, boolean hasStarHack);
  void onDeclarationEnd();
  ExpressionHandler onDefinitionStart(ParserToken definitionName);
  void onDefinitionEnd();

  /**
   * Builds a boolean expression.
   */
  public interface BooleanExpressionHandler {
    void onBooleanExpressionStart();

    Object onConstant(ParserToken constantName);

    Object onUnaryOperator(CssBooleanExpressionNode.Type operator,
        ParserToken operatorToken, Object operand);

    Object onBinaryOperator(CssBooleanExpressionNode.Type operator,
        ParserToken operatorToken, Object leftOperand, Object rightOperand);

    void onBooleanExpressionEnd(Object topOperand);
  }
  BooleanExpressionHandler onConditionalRuleStart(CssAtRuleNode.Type type,
      ParserToken ruleName);
  void onConditionalRuleEnd();

  /**
   * Builds an import.
   */
  public interface ImportHandler {
    void appendImportParameter(ParserToken parameter);
  }
  ImportHandler onImportRuleStart();
  void onImportRuleEnd();

  /**
   * Builds a media rule.
   */
  public interface MediaHandler {
    void appendMediaParameter(ParserToken parameter);
  }
  MediaHandler onMediaRuleStart();
  void onMediaRuleEnd();

  // TODO(user): Add events for unrecognized/unknown at rules.
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy