mirror of
https://github.com/less/less.js.git
synced 2026-05-01 03:00:22 -04:00
Fix merge errors/problems and change format to ++
This commit is contained in:
94
dist/less-1.4.0.js
vendored
94
dist/less-1.4.0.js
vendored
@@ -655,7 +655,8 @@ less.Parser = function Parser(env) {
|
||||
var node, root = [];
|
||||
|
||||
while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) ||
|
||||
$(this.mixin.call) || $(this.comment) || $(this.directive))
|
||||
$(this.mixin.call) || $(this.comment) || $(this.directive) ||
|
||||
$(this.extend))
|
||||
|| $(/^[\s\n]+/) || $(/^;+/)) {
|
||||
node && root.push(node);
|
||||
}
|
||||
@@ -917,10 +918,27 @@ less.Parser = function Parser(env) {
|
||||
if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) {
|
||||
return new(tree.Shorthand)(a, b);
|
||||
}
|
||||
|
||||
|
||||
restore();
|
||||
},
|
||||
|
||||
//
|
||||
// extend
|
||||
//
|
||||
extend: function() {
|
||||
var elements = [], e, args, index = i;
|
||||
|
||||
if (input.charAt(i) !== '+') { return; }
|
||||
|
||||
while (e = $(/^\+\+[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
|
||||
elements.push(new(tree.Element)(null, e.slice(2), i));
|
||||
}
|
||||
|
||||
if (elements.length > 0 && ($(';') || peek('}'))) {
|
||||
return new(tree.Extend)(elements, index);
|
||||
}
|
||||
},
|
||||
|
||||
//
|
||||
// Mixins
|
||||
//
|
||||
@@ -2736,6 +2754,62 @@ tree.Expression.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
})(require('../tree'));
|
||||
(function (tree) {
|
||||
|
||||
tree.Extend = function Extend(elements, index) {
|
||||
this.selector = new(tree.Selector)(elements);
|
||||
this.index = index;
|
||||
};
|
||||
|
||||
tree.Extend.prototype.eval = function Extend_eval(env) {
|
||||
var selfSelectors = findSelfSelectors(env.selectors),
|
||||
targetValue = this.selector.elements[0].value;
|
||||
|
||||
env.frames.forEach(function(frame) {
|
||||
frame.rulesets().forEach(function(rule) {
|
||||
rule.selectors.forEach(function(selector) {
|
||||
selector.elements.forEach(function(element, idx) {
|
||||
if (element.value === targetValue) {
|
||||
selfSelectors.forEach(function(_selector) {
|
||||
_selector.elements[0] = new tree.Element(
|
||||
element.combinator,
|
||||
_selector.elements[0].value,
|
||||
_selector.elements[0].index
|
||||
);
|
||||
rule.selectors.push(new tree.Selector(
|
||||
selector.elements
|
||||
.slice(0, idx)
|
||||
.concat(_selector.elements)
|
||||
.concat(selector.elements.slice(idx + 1))
|
||||
));
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
function findSelfSelectors(selectors) {
|
||||
var ret = [];
|
||||
|
||||
(function loop(elem, i) {
|
||||
if (selectors[i] && selectors[i].length) {
|
||||
selectors[i].forEach(function(s) {
|
||||
loop(s.elements.concat(elem), i + 1);
|
||||
});
|
||||
}
|
||||
else {
|
||||
ret.push({ elements: elem });
|
||||
}
|
||||
})([], 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
})(require('../tree'));
|
||||
(function (tree) {
|
||||
//
|
||||
@@ -3392,6 +3466,12 @@ tree.Ruleset.prototype = {
|
||||
// push the current ruleset to the frames stack
|
||||
env.frames.unshift(ruleset);
|
||||
|
||||
// currrent selectors
|
||||
if (!env.selectors) {
|
||||
env.selectors = [];
|
||||
}
|
||||
env.selectors.unshift(this.selectors);
|
||||
|
||||
// Evaluate imports
|
||||
if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
|
||||
for (var i = 0; i < ruleset.rules.length; i++) {
|
||||
@@ -3436,6 +3516,7 @@ tree.Ruleset.prototype = {
|
||||
|
||||
// Pop the stack
|
||||
env.frames.shift();
|
||||
env.selectors.shift();
|
||||
|
||||
if (env.mediaBlocks) {
|
||||
for(var i = mediaBlockCount; i < env.mediaBlocks.length; i++) {
|
||||
@@ -3472,12 +3553,9 @@ tree.Ruleset.prototype = {
|
||||
return this.variables()[name];
|
||||
},
|
||||
rulesets: function () {
|
||||
if (this._rulesets) { return this._rulesets }
|
||||
else {
|
||||
return this._rulesets = this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
}
|
||||
return this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
},
|
||||
find: function (selector, self) {
|
||||
self = self || this;
|
||||
|
||||
4
dist/less-1.4.0.min.js
vendored
4
dist/less-1.4.0.min.js
vendored
File diff suppressed because one or more lines are too long
94
dist/less-rhino-1.4.0.js
vendored
94
dist/less-rhino-1.4.0.js
vendored
@@ -647,7 +647,8 @@ less.Parser = function Parser(env) {
|
||||
var node, root = [];
|
||||
|
||||
while ((node = $(this.mixin.definition) || $(this.rule) || $(this.ruleset) ||
|
||||
$(this.mixin.call) || $(this.comment) || $(this.directive))
|
||||
$(this.mixin.call) || $(this.comment) || $(this.directive) ||
|
||||
$(this.extend))
|
||||
|| $(/^[\s\n]+/) || $(/^;+/)) {
|
||||
node && root.push(node);
|
||||
}
|
||||
@@ -909,10 +910,27 @@ less.Parser = function Parser(env) {
|
||||
if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) {
|
||||
return new(tree.Shorthand)(a, b);
|
||||
}
|
||||
|
||||
|
||||
restore();
|
||||
},
|
||||
|
||||
//
|
||||
// extend
|
||||
//
|
||||
extend: function() {
|
||||
var elements = [], e, args, index = i;
|
||||
|
||||
if (input.charAt(i) !== '+') { return; }
|
||||
|
||||
while (e = $(/^\+\+[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
|
||||
elements.push(new(tree.Element)(null, e.slice(2), i));
|
||||
}
|
||||
|
||||
if (elements.length > 0 && ($(';') || peek('}'))) {
|
||||
return new(tree.Extend)(elements, index);
|
||||
}
|
||||
},
|
||||
|
||||
//
|
||||
// Mixins
|
||||
//
|
||||
@@ -2728,6 +2746,62 @@ tree.Expression.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
})(require('../tree'));
|
||||
(function (tree) {
|
||||
|
||||
tree.Extend = function Extend(elements, index) {
|
||||
this.selector = new(tree.Selector)(elements);
|
||||
this.index = index;
|
||||
};
|
||||
|
||||
tree.Extend.prototype.eval = function Extend_eval(env) {
|
||||
var selfSelectors = findSelfSelectors(env.selectors),
|
||||
targetValue = this.selector.elements[0].value;
|
||||
|
||||
env.frames.forEach(function(frame) {
|
||||
frame.rulesets().forEach(function(rule) {
|
||||
rule.selectors.forEach(function(selector) {
|
||||
selector.elements.forEach(function(element, idx) {
|
||||
if (element.value === targetValue) {
|
||||
selfSelectors.forEach(function(_selector) {
|
||||
_selector.elements[0] = new tree.Element(
|
||||
element.combinator,
|
||||
_selector.elements[0].value,
|
||||
_selector.elements[0].index
|
||||
);
|
||||
rule.selectors.push(new tree.Selector(
|
||||
selector.elements
|
||||
.slice(0, idx)
|
||||
.concat(_selector.elements)
|
||||
.concat(selector.elements.slice(idx + 1))
|
||||
));
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
function findSelfSelectors(selectors) {
|
||||
var ret = [];
|
||||
|
||||
(function loop(elem, i) {
|
||||
if (selectors[i] && selectors[i].length) {
|
||||
selectors[i].forEach(function(s) {
|
||||
loop(s.elements.concat(elem), i + 1);
|
||||
});
|
||||
}
|
||||
else {
|
||||
ret.push({ elements: elem });
|
||||
}
|
||||
})([], 0);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
})(require('../tree'));
|
||||
(function (tree) {
|
||||
//
|
||||
@@ -3384,6 +3458,12 @@ tree.Ruleset.prototype = {
|
||||
// push the current ruleset to the frames stack
|
||||
env.frames.unshift(ruleset);
|
||||
|
||||
// currrent selectors
|
||||
if (!env.selectors) {
|
||||
env.selectors = [];
|
||||
}
|
||||
env.selectors.unshift(this.selectors);
|
||||
|
||||
// Evaluate imports
|
||||
if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
|
||||
for (var i = 0; i < ruleset.rules.length; i++) {
|
||||
@@ -3428,6 +3508,7 @@ tree.Ruleset.prototype = {
|
||||
|
||||
// Pop the stack
|
||||
env.frames.shift();
|
||||
env.selectors.shift();
|
||||
|
||||
if (env.mediaBlocks) {
|
||||
for(var i = mediaBlockCount; i < env.mediaBlocks.length; i++) {
|
||||
@@ -3464,12 +3545,9 @@ tree.Ruleset.prototype = {
|
||||
return this.variables()[name];
|
||||
},
|
||||
rulesets: function () {
|
||||
if (this._rulesets) { return this._rulesets }
|
||||
else {
|
||||
return this._rulesets = this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
}
|
||||
return this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
},
|
||||
find: function (selector, self) {
|
||||
self = self || this;
|
||||
|
||||
@@ -804,25 +804,25 @@ less.Parser = function Parser(env) {
|
||||
if ((a = $(this.entity)) && $('/') && (b = $(this.entity))) {
|
||||
return new(tree.Shorthand)(a, b);
|
||||
}
|
||||
|
||||
restore();
|
||||
},
|
||||
|
||||
//
|
||||
// extend
|
||||
//
|
||||
extend: function() {
|
||||
var elements = [], e, c, args, index = i, s = input.charAt(i);
|
||||
var elements = [], e, args, index = i;
|
||||
|
||||
if (s !== '+') { return }
|
||||
if (input.charAt(i) !== '+') { return; }
|
||||
|
||||
while (e = $(/^\+[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
|
||||
elements.push(new(tree.Element)(c, e.slice(1), i));
|
||||
while (e = $(/^\+\+[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) {
|
||||
elements.push(new(tree.Element)(null, e.slice(2), i));
|
||||
}
|
||||
|
||||
if (elements.length > 0 && ($(';') || peek('}'))) {
|
||||
return new(tree.Extend)(elements, index);
|
||||
}
|
||||
|
||||
restore();
|
||||
},
|
||||
|
||||
//
|
||||
|
||||
@@ -122,12 +122,9 @@ tree.Ruleset.prototype = {
|
||||
return this.variables()[name];
|
||||
},
|
||||
rulesets: function () {
|
||||
if (this._rulesets) { return this._rulesets }
|
||||
else {
|
||||
return this._rulesets = this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
}
|
||||
return this.rules.filter(function (r) {
|
||||
return (r instanceof tree.Ruleset) || (r instanceof tree.mixin.Definition);
|
||||
});
|
||||
},
|
||||
find: function (selector, self) {
|
||||
self = self || this;
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
.clearfix, .foo, .bar {
|
||||
.clearfix,
|
||||
.foo,
|
||||
.bar {
|
||||
*zoom: 1;
|
||||
}
|
||||
.clearfix:after, .foo:after, .bar:after {
|
||||
.clearfix:after,
|
||||
.foo:after,
|
||||
.bar:after {
|
||||
content: '';
|
||||
display: block;
|
||||
clear: both;
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
.sidebar, .sidebar2, .type1 .sidebar3 {
|
||||
.sidebar,
|
||||
.sidebar2,
|
||||
.type1 .sidebar3 {
|
||||
width: 300px;
|
||||
background: red;
|
||||
}
|
||||
.sidebar .box, .sidebar2 .box, .type1 .sidebar3 .box {
|
||||
.sidebar .box,
|
||||
.sidebar2 .box,
|
||||
.type1 .sidebar3 .box {
|
||||
background: #FFF;
|
||||
border: 1px solid #000;
|
||||
margin: 10px 0;
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
.error, .badError {
|
||||
.error,
|
||||
.badError {
|
||||
border: 1px #f00;
|
||||
background: #fdd;
|
||||
}
|
||||
.error.intrusion, .badError.intrusion {
|
||||
.error.intrusion,
|
||||
.badError.intrusion {
|
||||
font-size: 1.3em;
|
||||
font-weight: bold;
|
||||
}
|
||||
.intrusion .error, .intrusion .badError {
|
||||
.intrusion .error,
|
||||
.intrusion .badError {
|
||||
display: none;
|
||||
}
|
||||
.badError {
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
}
|
||||
|
||||
.foo {
|
||||
+.clearfix;
|
||||
++.clearfix;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.bar {
|
||||
+.clearfix;
|
||||
++.clearfix;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
}
|
||||
|
||||
.sidebar2 {
|
||||
+.sidebar;
|
||||
++.sidebar;
|
||||
background: blue;
|
||||
}
|
||||
|
||||
.type1 {
|
||||
.sidebar3 {
|
||||
+.sidebar;
|
||||
++.sidebar;
|
||||
background: green;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
display: none;
|
||||
}
|
||||
.badError {
|
||||
+.error;
|
||||
++.error;
|
||||
border-width: 3px;
|
||||
}
|
||||
|
||||
@@ -19,17 +19,19 @@
|
||||
}
|
||||
|
||||
.ext1 .ext2 {
|
||||
+.foo;
|
||||
++.foo;
|
||||
}
|
||||
|
||||
.ext3, .ext4 {
|
||||
+.foo;
|
||||
.ext3,
|
||||
.ext4 {
|
||||
++.foo;
|
||||
}
|
||||
|
||||
div.ext5, .ext6 > .ext5 {
|
||||
div.ext5,
|
||||
.ext6 > .ext5 {
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.ext7 {
|
||||
+.ext5;
|
||||
++.ext5;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user