|
13 | 13 | },
|
14 | 14 | visitRule: function (ruleNode, visitArgs) {
|
15 | 15 | visitArgs.visitDeeper = false;
|
16 |
| - return ruleNode; |
17 | 16 | },
|
18 | 17 | visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
|
19 | 18 | visitArgs.visitDeeper = false;
|
20 |
| - return mixinDefinitionNode; |
21 | 19 | },
|
22 | 20 | visitRuleset: function (rulesetNode, visitArgs) {
|
23 | 21 |
|
|
38 | 36 | // and the ones which apply to an individual extend
|
39 | 37 | for(i = 0; i < rulesetNode.selectors.length; i++) {
|
40 | 38 | var selector = rulesetNode.selectors[i];
|
41 |
| - extendList = selector.extendList.slice(0).concat(allSelectorsExtendList); |
| 39 | + extendList = selector.extendList.slice(0).concat(allSelectorsExtendList.map(function(allSelectorsExtend) { |
| 40 | + return allSelectorsExtend.clone(); |
| 41 | + })); |
42 | 42 | for(j = 0; j < extendList.length; j++) {
|
43 | 43 | extend = extendList[j];
|
44 | 44 | extend.findSelfSelectors([[selector]].concat(this.contexts.slice(0)));
|
|
82 | 82 | },
|
83 | 83 | visitRule: function (ruleNode, visitArgs) {
|
84 | 84 | visitArgs.visitDeeper = false;
|
85 |
| - return ruleNode; |
86 | 85 | },
|
87 | 86 | visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
|
88 | 87 | visitArgs.visitDeeper = false;
|
89 |
| - return mixinDefinitionNode; |
| 88 | + }, |
| 89 | + visitSelector: function (selectorNode, visitArgs) { |
| 90 | + visitArgs.visitDeeper = false; |
90 | 91 | },
|
91 | 92 | visitRuleset: function (rulesetNode, visitArgs) {
|
92 | 93 | if (rulesetNode.root) {
|
93 | 94 | return;
|
94 | 95 | }
|
| 96 | + var i, j, k, selector, element, allExtends = this.allExtendsStack[this.allExtendsStack.length-1], selectorsToAdd = []; |
| 97 | + if (allExtends.length) { |
| 98 | + for(i = 0; i < rulesetNode.selectors.length; i++) { |
| 99 | + selector = rulesetNode.selectors[i]; |
| 100 | + for(j = 0; j < selector.elements.length; j++) { |
| 101 | + element = selector.elements[j]; |
| 102 | + for(k = 0; k < allExtends.length; k++) { |
| 103 | + if (allExtends[k].selector.elements[0].value === element.value) { |
| 104 | + allExtends[k].selfSelectors.forEach(function(selfSelector) { |
| 105 | + selfSelector.elements[0] = new tree.Element( |
| 106 | + element.combinator, |
| 107 | + selfSelector.elements[0].value, |
| 108 | + selfSelector.elements[0].index |
| 109 | + ); |
| 110 | + selectorsToAdd.push(new tree.Selector( |
| 111 | + selector.elements |
| 112 | + .slice(0, j) |
| 113 | + .concat(selfSelector.elements) |
| 114 | + .concat(selector.elements.slice(j + 1)) |
| 115 | + )); |
| 116 | + }); |
| 117 | + } |
| 118 | + } |
| 119 | + } |
| 120 | + } |
| 121 | + rulesetNode.selectors = rulesetNode.selectors.concat(selectorsToAdd); |
| 122 | + } |
95 | 123 | },
|
96 | 124 | visitRulesetOut: function (rulesetNode) {
|
97 | 125 | },
|
|
0 commit comments