var TYPE = require('../../tokenizer').TYPE; 
 | 
  
 | 
var DELIM = TYPE.Delim; 
 | 
var IDENT = TYPE.Ident; 
 | 
var DIMENSION = TYPE.Dimension; 
 | 
var PERCENTAGE = TYPE.Percentage; 
 | 
var NUMBER = TYPE.Number; 
 | 
var HASH = TYPE.Hash; 
 | 
var COLON = TYPE.Colon; 
 | 
var LEFTSQUAREBRACKET = TYPE.LeftSquareBracket; 
 | 
var NUMBERSIGN = 0x0023;      // U+0023 NUMBER SIGN (#) 
 | 
var ASTERISK = 0x002A;        // U+002A ASTERISK (*) 
 | 
var PLUSSIGN = 0x002B;        // U+002B PLUS SIGN (+) 
 | 
var SOLIDUS = 0x002F;         // U+002F SOLIDUS (/) 
 | 
var FULLSTOP = 0x002E;        // U+002E FULL STOP (.) 
 | 
var GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>) 
 | 
var VERTICALLINE = 0x007C;    // U+007C VERTICAL LINE (|) 
 | 
var TILDE = 0x007E;           // U+007E TILDE (~) 
 | 
  
 | 
function getNode(context) { 
 | 
    switch (this.scanner.tokenType) { 
 | 
        case LEFTSQUAREBRACKET: 
 | 
            return this.AttributeSelector(); 
 | 
  
 | 
        case HASH: 
 | 
            return this.IdSelector(); 
 | 
  
 | 
        case COLON: 
 | 
            if (this.scanner.lookupType(1) === COLON) { 
 | 
                return this.PseudoElementSelector(); 
 | 
            } else { 
 | 
                return this.PseudoClassSelector(); 
 | 
            } 
 | 
  
 | 
        case IDENT: 
 | 
            return this.TypeSelector(); 
 | 
  
 | 
        case NUMBER: 
 | 
        case PERCENTAGE: 
 | 
            return this.Percentage(); 
 | 
  
 | 
        case DIMENSION: 
 | 
            // throws when .123ident 
 | 
            if (this.scanner.source.charCodeAt(this.scanner.tokenStart) === FULLSTOP) { 
 | 
                this.error('Identifier is expected', this.scanner.tokenStart + 1); 
 | 
            } 
 | 
            break; 
 | 
  
 | 
        case DELIM: 
 | 
            var code = this.scanner.source.charCodeAt(this.scanner.tokenStart); 
 | 
  
 | 
            switch (code) { 
 | 
                case PLUSSIGN: 
 | 
                case GREATERTHANSIGN: 
 | 
                case TILDE: 
 | 
                    context.space = null; 
 | 
                    context.ignoreWSAfter = true; 
 | 
                    return this.Combinator(); 
 | 
  
 | 
                case SOLIDUS:  // /deep/ 
 | 
                    return this.Combinator(); 
 | 
  
 | 
                case FULLSTOP: 
 | 
                    return this.ClassSelector(); 
 | 
  
 | 
                case ASTERISK: 
 | 
                case VERTICALLINE: 
 | 
                    return this.TypeSelector(); 
 | 
  
 | 
                case NUMBERSIGN: 
 | 
                    return this.IdSelector(); 
 | 
            } 
 | 
  
 | 
            break; 
 | 
    } 
 | 
}; 
 | 
  
 | 
module.exports = { 
 | 
    getNode: getNode 
 | 
}; 
 |