change @arguments behaviour to be more like js

This commit is contained in:
Alexis Sellier
2011-05-11 12:33:54 -04:00
parent e2ad523746
commit 02bb402c4d

View File

@@ -62,7 +62,7 @@ tree.mixin.Definition.prototype = {
rulesets: function () { return this.parent.rulesets.apply(this) },
eval: function (env, args) {
var frame = new(tree.Ruleset)(null, []), context;
var frame = new(tree.Ruleset)(null, []), context, _arguments = [];
for (var i = 0, val; i < this.params.length; i++) {
if (this.params[i].name) {
@@ -74,7 +74,10 @@ tree.mixin.Definition.prototype = {
}
}
}
frame.rules.unshift(new(tree.Rule)('@arguments', new(tree.Expression)(args)));
for (var i = 0; i < Math.max(this.params.length, args && args.length); i++) {
_arguments.push(args[i] || this.params[i].value);
}
frame.rules.unshift(new(tree.Rule)('@arguments', new(tree.Expression)(_arguments)));
return new(tree.Ruleset)(null, this.rules.slice(0)).eval({
frames: [this, frame].concat(this.frames, env.frames)