| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 'use strict';
- const types = require('../../tokenizer/types.cjs');
- const PLUSSIGN = 0x002B; // U+002B PLUS SIGN (+)
- const SOLIDUS = 0x002F; // U+002F SOLIDUS (/)
- const GREATERTHANSIGN = 0x003E; // U+003E GREATER-THAN SIGN (>)
- const TILDE = 0x007E; // U+007E TILDE (~)
- const name = 'Combinator';
- const structure = {
- name: String
- };
- // + | > | ~ | /deep/
- function parse() {
- const start = this.tokenStart;
- let name;
- switch (this.tokenType) {
- case types.WhiteSpace:
- name = ' ';
- break;
- case types.Delim:
- switch (this.charCodeAt(this.tokenStart)) {
- case GREATERTHANSIGN:
- case PLUSSIGN:
- case TILDE:
- this.next();
- break;
- case SOLIDUS:
- this.next();
- this.eatIdent('deep');
- this.eatDelim(SOLIDUS);
- break;
- default:
- this.error('Combinator is expected');
- }
- name = this.substrToCursor(start);
- break;
- }
- return {
- type: 'Combinator',
- loc: this.getLocation(start, this.tokenStart),
- name
- };
- }
- function generate(node) {
- this.tokenize(node.name);
- }
- exports.generate = generate;
- exports.name = name;
- exports.parse = parse;
- exports.structure = structure;
|