Marko v3: allow more than two args for builder.concat(...)

This commit is contained in:
Patrick Steele-Idem 2016-02-06 10:48:34 -07:00
parent 410bb80ede
commit 90317b899f
7 changed files with 43 additions and 4 deletions

View File

@ -103,11 +103,23 @@ class Builder {
return new Code({value});
}
concat(left, right) {
left = makeNode(left);
right = makeNode(right);
concat(args) {
var prev;
let operator = '+';
return new BinaryExpression({left, operator, right});
for (var i=1; i<arguments.length; i++) {
var left;
var right = makeNode(arguments[i]);
if (i === 1) {
left = makeNode(arguments[i-1]);
} else {
left = prev;
}
prev = new BinaryExpression({left, operator, right});
}
return prev;
}
conditionalExpression(test, consequent, alternate) {

View File

@ -0,0 +1 @@
((a + b) + c) + d

View File

@ -0,0 +1,9 @@
'use strict';
module.exports = function(builder) {
return builder.concat(
builder.identifier('a'),
builder.identifier('b'),
builder.identifier('c'),
builder.identifier('d'));
};

View File

@ -0,0 +1 @@
(a + b) + c

View File

@ -0,0 +1,8 @@
'use strict';
module.exports = function(builder) {
return builder.concat(
builder.identifier('a'),
builder.identifier('b'),
builder.identifier('c'));
};

View File

@ -0,0 +1 @@
a + b

View File

@ -0,0 +1,7 @@
'use strict';
module.exports = function(builder) {
return builder.concat(
builder.identifier('a'),
builder.identifier('b'));
};