You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
var TYPE = require('../../tokenizer').TYPE;
var IDENT = TYPE.Ident; var NUMBER = TYPE.Number; var DIMENSION = TYPE.Dimension; var LEFTPARENTHESIS = TYPE.LeftParenthesis; var RIGHTPARENTHESIS = TYPE.RightParenthesis; var COLON = TYPE.Colon; var DELIM = TYPE.Delim;
module.exports = { name: 'MediaFeature', structure: { name: String, value: ['Identifier', 'Number', 'Dimension', 'Ratio', null] }, parse: function() { var start = this.scanner.tokenStart; var name; var value = null;
this.eat(LEFTPARENTHESIS); this.scanner.skipSC();
name = this.consume(IDENT); this.scanner.skipSC();
if (this.scanner.tokenType !== RIGHTPARENTHESIS) { this.eat(COLON); this.scanner.skipSC();
switch (this.scanner.tokenType) { case NUMBER: if (this.lookupNonWSType(1) === DELIM) { value = this.Ratio(); } else { value = this.Number(); }
break;
case DIMENSION: value = this.Dimension(); break;
case IDENT: value = this.Identifier();
break;
default: this.error('Number, dimension, ratio or identifier is expected'); }
this.scanner.skipSC(); }
this.eat(RIGHTPARENTHESIS);
return { type: 'MediaFeature', loc: this.getLocation(start, this.scanner.tokenStart), name: name, value: value }; }, generate: function(node) { this.chunk('('); this.chunk(node.name); if (node.value !== null) { this.chunk(':'); this.node(node.value); } this.chunk(')'); } };
|