art
Version:
Cross-browser Vector Graphics
44 lines (35 loc) • 1.05 kB
JavaScript
var AST = require('./program');
AST.Call = function(expr, args){
this.expression = AST.Expression(expr);
var l = args ? args.length : 0;
this.arguments = new Array(l);
for (var i = 0; i < l; i++) this.arguments[i] = AST.Expression(args[i]);
};
AST.Call.prototype = new AST.Expression();
AST.Call.prototype.writeTo = function(write, format){
this.expression.writeTo(write, format);
write('(');
var args = this.arguments;
if (args.length > 0){
args[0].writeTo(write, format);
for (var i = 1, l = args.length; i < l; i++){
write(', ');
args[i].writeTo(write, format);
}
}
write(')');
};
AST.New = function(){
AST.Call.apply(this, arguments);
};
AST.New.prototype = new AST.Call();
AST.New.prototype.writeTo = function(write, format){
write('new ');
AST.Call.prototype.writeTo.call(this, write, format);
};
AST.Expression.prototype.call = function(){
return new AST.Call(this, arguments);
};
AST.Expression.prototype.construct = function(){
return new AST.New(this, arguments);
};