12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- var nodes = require('../nodes')
- , Parser = require('../selector-parser');
- /**
- * Return a list with raw selectors parts
- * of the current group.
- *
- * For example:
- *
- * .a, .b
- * .c
- * .d
- * test: selectors() // => '.a,.b', '& .c', '& .d'
- *
- * @return {Expression}
- * @api public
- */
- module.exports = function selectors(){
- var stack = this.selectorStack
- , expr = new nodes.Expression(true);
- if (stack.length) {
- for (var i = 0; i < stack.length; i++) {
- var group = stack[i]
- , nested;
- if (group.length > 1) {
- expr.push(new nodes.String(group.map(function(selector) {
- nested = new Parser(selector.val).parse().nested;
- return (nested && i ? '& ' : '') + selector.val;
- }).join(',')))
- } else {
- var selector = group[0].val
- nested = new Parser(selector).parse().nested;
- expr.push(new nodes.String((nested && i ? '& ' : '') + selector));
- }
- }
- } else {
- expr.push(new nodes.String('&'));
- }
- return expr;
- };
|