Syntax changed to !merge(space | comma)

* Syntax changed to !merge(space | comma)
* !merge(space) implemented by Expression instead of Value.
* Added test for lonely property with !merge directive
This commit is contained in:
Daniel Katz
2013-02-07 22:22:56 +02:00
committed by Luke Page
parent 5dde7b3381
commit ff029c34bd
5 changed files with 28 additions and 19 deletions

View File

@@ -1501,12 +1501,13 @@ less.Parser = function Parser(env) {
var separator;
if (input.charAt(i) === '!') {
if ($(/^! *merge\(/)) {
if (input.charAt(i) === ")") {
separator = " ";
} else {
separator = $(/[^)]/);
}
expect(")");
separator = expect(/^ *space|comma */);
if (separator) {
separator = (separator.trim() === 'space')
? ' '
: ',';
}
expect(')');
}
}
return separator;

View File

@@ -485,9 +485,11 @@ tree.Ruleset.prototype = {
parts = groups[k];
if (parts.length > 1) {
parts[0].value = new (tree.Value)(parts.map(function (p) {
return p.value;
}), rule.merge);
rule = parts[0];
rule.value = new ((rule.merge === ' ') ? tree.Expression : tree.Value)(parts.map(function (p) {
return p.value;
}));
}
});
}

View File

@@ -1,8 +1,7 @@
(function (tree) {
tree.Value = function (value, separator) {
tree.Value = function (value) {
this.value = value;
this.separator = separator ? separator : ",";
};
tree.Value.prototype = {
type: "Value",
@@ -21,7 +20,7 @@ tree.Value.prototype = {
toCSS: function (env) {
return this.value.map(function (e) {
return e.toCSS(env);
}).join(this.separator + ((env.compress || this.separator === " ") ? "" : " "));
}).join(env.compress ? ',' : ', ');
}
};