import {
  WhiteSpace,
  Comment,
  Ident,
  LeftParenthesis,
} from '../../tokenizer/index.js';

export const name = 'MediaQuery';
export const structure = {
  children: [['Identifier', 'MediaFeature', 'WhiteSpace']],
};

export function parse() {
  const children = this.createList();
  let child = null;

  this.skipSC();

  scan: while (!this.eof) {
    switch (this.tokenType) {
      case Comment:
      case WhiteSpace:
        this.next();
        continue;

      case Ident:
        child = this.Identifier();
        break;

      case 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,
  };
}

export function generate(node) {
  this.children(node);
}