1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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
- };
|