com.google.caja.parser.css
Class CssTree

java.lang.Object
  extended by com.google.caja.parser.AbstractParseTreeNode
      extended by com.google.caja.parser.css.CssTree
All Implemented Interfaces:
MutableParseTreeNode, ParseTreeNode, MessagePart, Renderable, java.lang.Cloneable
Direct Known Subclasses:
CssTree.Attrib, CssTree.AttribOperation, CssTree.Combination, CssTree.CssExprAtom, CssTree.CssStatement, CssTree.DeclarationGroup, CssTree.Expr, CssTree.Medium, CssTree.Operation, CssTree.PageElement, CssTree.Prio, CssTree.ProgIdAttribute, CssTree.Property, CssTree.Pseudo, CssTree.Selector, CssTree.SimpleSelector, CssTree.StyleSheet, CssTree.Term, CssTree.WildcardElement

public abstract class CssTree
extends AbstractParseTreeNode

A node in a CSS parse tree.

Author:
mikesamuel@gmail.com

Nested Class Summary
static class CssTree.Attrib
           attrib : '[' S* IDENT S* [ [ '=' | INCLUDES | DASHMATCH ] S* [ IDENT | STRING ] S* ]? ']'
static class CssTree.AttribOperation
          [ '=' | INCLUDES | DASHMATCH ]
static class CssTree.AttribOperator
          Operator used in CssTree.Attrib
static class CssTree.ClassLiteral
          A class name in a selector like .foo.
static class CssTree.Combination
          See http://www.w3.org/TR/REC-CSS2/selector.html#q2
static class CssTree.Combinator
           combinator : '+' S* | '>' S* | empty
static class CssTree.CssExprAtom
          A primitive CSS literal expression or function call.
static class CssTree.CssLiteral
          Abstract base class for a literal value such as an ID, CLASS, URI, String, Color, or keyword value.
static class CssTree.CssStatement
          Part of a stylesheet.
static class CssTree.Declaration
          A CSS property name, style value pair.
static class CssTree.DeclarationGroup
          A root node with no equivalent in the grammar.
static class CssTree.EmptyDeclaration
           empty-declaration : empty
static class CssTree.Expr
           expr : term [ operator term ]*
static class CssTree.FontFace
           font_face : FONT_FACE_SYM S* '{' S* declaration [ ';' S* declaration ]* '}' S*
static class CssTree.FunctionCall
           function : FUNCTION S* expr ')' S*
static class CssTree.HashLiteral
          A color value in a property value like #AABBCC.
static class CssTree.IdentLiteral
          An identifier in a selector like div or a keyword in a property value like auto.
static class CssTree.IdLiteral
          An ID in a selector, like #foo.
static class CssTree.Import
           import : IMPORT_SYM S* [STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*
static class CssTree.Media
           media : MEDIA_SYM S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S*
static class CssTree.Medium
           medium : IDENT S*
static class CssTree.Operation
          See http://www.w3.org/TR/REC-CSS2/selector.html#q2
static class CssTree.Operator
           operator : '/' S* | ',' S* | empty
static class CssTree.Page
           page : PAGE_SYM S* IDENT? pseudo_page? S* '{' S* declaration [ ';' S* declaration ]* '}' S*
static class CssTree.PageElement
          A part of a CSS statement.
static class CssTree.Prio
           prio : IMPORTANT_SYM S*
static class CssTree.ProgId
          An IE extension used in the filter property as described at http://msdn.microsoft.com/en-us/library/ms532847(VS.85).aspx.
static class CssTree.ProgIdAttribute
           
static class CssTree.Property
           property : IDENT S*
static class CssTree.PropertyDeclaration
           property-declaration : property ':' S* expr prio?
static class CssTree.Pseudo
           pseudo : ':' [ IDENT | FUNCTION S* IDENT S* ')' ]
static class CssTree.PseudoPage
           pseudo_page : ':' IDENT
static class CssTree.QuantityLiteral
          A numeric quantity like 5cm, 100%, or 0.
static class CssTree.RuleSet
           ruleset : selector [ ',' S* selector ]* '{' S* declaration [ ';' S* declaration ]* '}' S*
static class CssTree.Selector
           selector : simple_selector [ combinator simple_selector ]*
static class CssTree.SimpleSelector
           simple_selector : element_name? [ HASH | class | attrib | pseudo ]* S*
static class CssTree.StringLiteral
          A string literal in a property value like 'foo'.
static class CssTree.StyleSheet
          The top level parsetree node.
static class CssTree.Substitution
          A template substitution in a CSS stylesheet.
static class CssTree.Term
           term : unary_operator? [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | TIME S* | FREQ S* | function ] | STRING S* | IDENT S* | URI S* | RGB S* | UNICODERANGE S* | hexcolor
static class CssTree.UnaryOperator
           unary_operator : '-' | '+'
static class CssTree.UnicodeRangeLiteral
          A range of unicode code-points.
static class CssTree.UriLiteral
          A uri literal like url('foo/bar.css').
static class CssTree.UserAgent
          An identifier for a version of a supported browser.
static class CssTree.UserAgentHack
          A hack that uses syntactically invalid CSS to make a rule visible on some user agents but invisible on others.
static class CssTree.WildcardElement
           element_name : IDENT | '*'
 
Nested classes/interfaces inherited from interface com.google.caja.parser.MutableParseTreeNode
MutableParseTreeNode.Mutation
 
Nested classes/interfaces inherited from interface com.google.caja.parser.ParseTreeNode
ParseTreeNode.ReflectiveCtor
 
Nested classes/interfaces inherited from interface com.google.caja.reporting.MessagePart
MessagePart.Factory
 
Field Summary
private static java.util.regex.Pattern CLASSLITERAL
           
private static java.util.regex.Pattern HASHLITERAL
           
private static java.util.regex.Pattern IDENTLITERAL
           
private static java.util.regex.Pattern IDLITERAL
           
private static java.util.regex.Pattern QUANTITYLITERAL
           
private static java.util.regex.Pattern SUBSTITUTION
           
private static java.util.regex.Pattern UNICODERANGELITERAL
           
 
Fields inherited from interface com.google.caja.parser.ParseTreeNode
TAINTED
 
Constructor Summary
private CssTree(FilePosition pos, java.lang.Class<T> subType, java.util.List<? extends T> children)
           
private CssTree(FilePosition pos, java.util.List<? extends CssTree> children)
           
 
Method Summary
 java.util.List<? extends CssTree> children()
          An immutable list of children.
 java.lang.Object getValue()
           
 TokenConsumer makeRenderer(java.lang.Appendable out, Callback<java.io.IOException> exHandler)
          Create a renderer capable of rendering this node.
private static void renderCommaGroup(java.util.List<? extends CssTree> children, RenderContext r)
           
private static void renderCssIdent(java.lang.String ident, RenderContext r)
           
private static void renderCssString(java.lang.String s, RenderContext r)
           
private static void renderSpaceGroup(java.util.List<? extends CssTree> children, RenderContext r)
           
private static void renderStatements(java.util.List<? extends CssTree> children, FilePosition pos, RenderContext r)
           
 java.lang.String toString()
           
 
Methods inherited from class com.google.caja.parser.AbstractParseTreeNode
acceptPostOrder, acceptPreOrder, appendChild, childrenAs, childrenChanged, childrenPart, clone, createMutation, equals, format, formatSelf, formatTree, formatTree, getAttributes, getComments, getFilePosition, hashCode, insertBefore, removeChild, replaceChild, setComments, setFilePosition, toStringDeep, toStringDeep
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.google.caja.reporting.Renderable
render
 

Field Detail

IDLITERAL

private static final java.util.regex.Pattern IDLITERAL

CLASSLITERAL

private static final java.util.regex.Pattern CLASSLITERAL

IDENTLITERAL

private static final java.util.regex.Pattern IDENTLITERAL

HASHLITERAL

private static final java.util.regex.Pattern HASHLITERAL

QUANTITYLITERAL

private static final java.util.regex.Pattern QUANTITYLITERAL

UNICODERANGELITERAL

private static final java.util.regex.Pattern UNICODERANGELITERAL

SUBSTITUTION

private static final java.util.regex.Pattern SUBSTITUTION
Constructor Detail

CssTree

private CssTree(FilePosition pos,
                java.util.List<? extends CssTree> children)

CssTree

private CssTree(FilePosition pos,
                java.lang.Class<T> subType,
                java.util.List<? extends T> children)
Method Detail

getValue

public java.lang.Object getValue()
Specified by:
getValue in interface ParseTreeNode
Specified by:
getValue in class AbstractParseTreeNode
Returns:
null or a value with subclass specific meaning which encapsulates all parsed state separate from the children.

children

public java.util.List<? extends CssTree> children()
Description copied from interface: ParseTreeNode
An immutable list of children.

Specified by:
children in interface ParseTreeNode
Overrides:
children in class AbstractParseTreeNode

toString

public java.lang.String toString()
Overrides:
toString in class AbstractParseTreeNode

makeRenderer

public final TokenConsumer makeRenderer(java.lang.Appendable out,
                                        Callback<java.io.IOException> exHandler)
Description copied from interface: Renderable
Create a renderer capable of rendering this node.

Parameters:
out - a channel to receive the rendered form.
exHandler - receives IOExceptions thrown by out. May be null if out will not throw an IOException on append.
See Also:
com.google.caja.render

renderStatements

private static void renderStatements(java.util.List<? extends CssTree> children,
                                     FilePosition pos,
                                     RenderContext r)

renderCommaGroup

private static void renderCommaGroup(java.util.List<? extends CssTree> children,
                                     RenderContext r)

renderSpaceGroup

private static void renderSpaceGroup(java.util.List<? extends CssTree> children,
                                     RenderContext r)

renderCssIdent

private static void renderCssIdent(java.lang.String ident,
                                   RenderContext r)

renderCssString

private static void renderCssString(java.lang.String s,
                                    RenderContext r)


Copyright (C) 2008 Google Inc.
Licensed under the Apache License, Version 2.0