var TYPE = require('../../tokenizer').TYPE; 
 | 
  
 | 
var IDENT = TYPE.Ident; 
 | 
var FUNCTION = TYPE.Function; 
 | 
var COLON = TYPE.Colon; 
 | 
var RIGHTPARENTHESIS = TYPE.RightParenthesis; 
 | 
  
 | 
// : [ <ident> | <function-token> <any-value>? ) ] 
 | 
module.exports = { 
 | 
    name: 'PseudoClassSelector', 
 | 
    structure: { 
 | 
        name: String, 
 | 
        children: [['Raw'], null] 
 | 
    }, 
 | 
    parse: function() { 
 | 
        var start = this.scanner.tokenStart; 
 | 
        var children = null; 
 | 
        var name; 
 | 
        var nameLowerCase; 
 | 
  
 | 
        this.eat(COLON); 
 | 
  
 | 
        if (this.scanner.tokenType === FUNCTION) { 
 | 
            name = this.consumeFunctionName(); 
 | 
            nameLowerCase = name.toLowerCase(); 
 | 
  
 | 
            if (this.pseudo.hasOwnProperty(nameLowerCase)) { 
 | 
                this.scanner.skipSC(); 
 | 
                children = this.pseudo[nameLowerCase].call(this); 
 | 
                this.scanner.skipSC(); 
 | 
            } else { 
 | 
                children = this.createList(); 
 | 
                children.push( 
 | 
                    this.Raw(this.scanner.tokenIndex, null, false) 
 | 
                ); 
 | 
            } 
 | 
  
 | 
            this.eat(RIGHTPARENTHESIS); 
 | 
        } else { 
 | 
            name = this.consume(IDENT); 
 | 
        } 
 | 
  
 | 
        return { 
 | 
            type: 'PseudoClassSelector', 
 | 
            loc: this.getLocation(start, this.scanner.tokenStart), 
 | 
            name: name, 
 | 
            children: children 
 | 
        }; 
 | 
    }, 
 | 
    generate: function(node) { 
 | 
        this.chunk(':'); 
 | 
        this.chunk(node.name); 
 | 
  
 | 
        if (node.children !== null) { 
 | 
            this.chunk('('); 
 | 
            this.children(node); 
 | 
            this.chunk(')'); 
 | 
        } 
 | 
    }, 
 | 
    walkContext: 'function' 
 | 
}; 
 |