| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | module.exports = {    name: 'Nth',    structure: {        nth: ['AnPlusB', 'Identifier'],        selector: ['SelectorList', null]    },    parse: function(allowOfClause) {        this.scanner.skipSC();        var start = this.scanner.tokenStart;        var end = start;        var selector = null;        var query;        if (this.scanner.lookupValue(0, 'odd') || this.scanner.lookupValue(0, 'even')) {            query = this.Identifier();        } else {            query = this.AnPlusB();        }        this.scanner.skipSC();        if (allowOfClause && this.scanner.lookupValue(0, 'of')) {            this.scanner.next();            selector = this.SelectorList();            if (this.needPositions) {                end = this.getLastListNode(selector.children).loc.end.offset;            }        } else {            if (this.needPositions) {                end = query.loc.end.offset;            }        }        return {            type: 'Nth',            loc: this.getLocation(start, end),            nth: query,            selector: selector        };    },    generate: function(node) {        this.node(node.nth);        if (node.selector !== null) {            this.chunk(' of ');            this.node(node.selector);        }    }};
 |