| 'use strict'; |
| |
| const types = require('../../tokenizer/types.cjs'); |
| |
| const name = 'MediaQuery'; |
| const structure = { |
| children: [[ |
| 'Identifier', |
| 'MediaFeature', |
| 'WhiteSpace' |
| ]] |
| }; |
| |
| function parse() { |
| const children = this.createList(); |
| let child = null; |
| |
| this.skipSC(); |
| |
| scan: |
| while (!this.eof) { |
| switch (this.tokenType) { |
| case types.Comment: |
| case types.WhiteSpace: |
| this.next(); |
| continue; |
| |
| case types.Ident: |
| child = this.Identifier(); |
| break; |
| |
| case types.LeftParenthesis: |
| child = this.MediaFeature(); |
| break; |
| |
| default: |
| break scan; |
| } |
| |
| children.push(child); |
| } |
| |
| if (child === null) { |
| this.error('Identifier or parenthesis is expected'); |
| } |
| |
| return { |
| type: 'MediaQuery', |
| loc: this.getLocationFromList(children), |
| children |
| }; |
| } |
| |
| function generate(node) { |
| this.children(node); |
| } |
| |
| exports.generate = generate; |
| exports.name = name; |
| exports.parse = parse; |
| exports.structure = structure; |