lib/less/js/lib/less/tree/selector.js in less-2.3.0 vs lib/less/js/lib/less/tree/selector.js in less-2.3.1
- old
+ new
@@ -1,23 +1,25 @@
(function (tree) {
tree.Selector = function (elements) {
this.elements = elements;
- if (this.elements[0].combinator.value === "") {
- this.elements[0].combinator.value = ' ';
- }
};
tree.Selector.prototype.match = function (other) {
- var len = this.elements.length,
- olen = other.elements.length,
- max = Math.min(len, olen);
+ var elements = this.elements,
+ len = elements.length,
+ oelements, olen, max, i;
- if (len < olen) {
+ oelements = other.elements.slice(
+ (other.elements.length && other.elements[0].value === "&") ? 1 : 0);
+ olen = oelements.length;
+ max = Math.min(len, olen)
+
+ if (olen === 0 || len < olen) {
return false;
} else {
- for (var i = 0; i < max; i++) {
- if (this.elements[i].value !== other.elements[i].value) {
+ for (i = 0; i < max; i++) {
+ if (elements[i].value !== oelements[i].value) {
return false;
}
}
}
return true;
@@ -27,16 +29,24 @@
return e.eval(env);
}));
};
tree.Selector.prototype.toCSS = function (env) {
if (this._css) { return this._css }
-
- return this._css = this.elements.map(function (e) {
+
+ if (this.elements[0].combinator.value === "") {
+ this._css = ' ';
+ } else {
+ this._css = '';
+ }
+
+ this._css += this.elements.map(function (e) {
if (typeof(e) === 'string') {
return ' ' + e.trim();
} else {
return e.toCSS(env);
}
}).join('');
+
+ return this._css;
};
})(require('../tree'));