Beispiel #1
0
        private void OnData(Token token)
        {
            switch (token.Type)
            {
            case TokenType.SquareBracketOpen:
                _attrName  = null;
                _attrValue = null;
                _attrOp    = string.Empty;
                _attrNs    = null;
                _state     = State.Attribute;
                _ready     = false;
                break;

            case TokenType.Colon:
                _state = State.PseudoClass;
                _ready = false;
                break;

            case TokenType.Hash:
                Insert(SimpleSelector.Id(token.Data));
                _ready = true;
                break;

            case TokenType.Ident:
                Insert(SimpleSelector.Type(token.Data));
                _ready = true;
                break;

            case TokenType.Whitespace:
                Insert(Combinator.Descendent);
                break;

            case TokenType.Delim:
                OnDelim(token);
                break;

            case TokenType.Comma:
                InsertOr();
                _ready = false;
                break;

            default:
                _valid = false;
                break;
            }
        }
Beispiel #2
0
        private void ParseSymbol(Block token)
        {
            switch (token.GrammarSegment)
            {
            // Attribute [A]
            case GrammarSegment.SquareBraceOpen:
                _attributeName     = null;
                _attributeValue    = null;
                _attributeOperator = string.Empty;
                _selectorOperation = SelectorOperation.Attribute;
                return;

            // Pseudo :P
            case GrammarSegment.Colon:
                _selectorOperation = SelectorOperation.PseudoClass;
                return;

            // ID #I
            case GrammarSegment.Hash:
                Insert(SimpleSelector.Id(((SymbolBlock)token).Value));
                return;

            // Type E
            case GrammarSegment.Ident:
                Insert(SimpleSelector.Type(((SymbolBlock)token).Value));
                return;

            // Whitespace
            case GrammarSegment.Whitespace:
                Insert(Combinator.Descendent);
                return;

            case GrammarSegment.Delimiter:
                ParseDelimiter(token);
                return;

            case GrammarSegment.Comma:
                InsertCommaDelimited();
                return;
            }
        }