package com.drawbridge.jsengine.ast;
import java.util.ArrayList;
import java.util.LinkedList;
import com.drawbridge.jsengine.Scope;
import com.drawbridge.jsengine.jsobjects.ExecutionException;
import com.drawbridge.jsengine.jsobjects.JSObject;
import com.drawbridge.jsengine.jsobjects.JSType;
import com.drawbridge.jsengine.jsobjects.JSValueProperty;
import com.drawbridge.utils.Utils;
import com.google.caja.parser.js.ObjectConstructor;
public class ObjectConstructorEvaluator extends Evaluator
{
private ArrayList<Evaluator> valuePropertyEvaluators = new ArrayList<Evaluator>();
public ObjectConstructorEvaluator(Evaluator parent, Scope scope, ObjectConstructor objectConstructor){
super(parent,scope, objectConstructor.getFilePosition());
for(int i = 0; i < objectConstructor.children().size(); i++){
valuePropertyEvaluators.add(Evaluator.getEvaluator(this, scope, objectConstructor.children().get(i)));
}
}
@Override
public JSType evaluate() throws EvaluatorException //extends ObjProperty
, ExecutionException
{
JSObject object = new JSObject();
for(int i = 0; i < valuePropertyEvaluators.size(); i++){
Utils.out.println(this.getClass(),"Name:" + valuePropertyEvaluators.get(i).getClass().getName());
JSValueProperty result = (JSValueProperty) valuePropertyEvaluators.get(i).evaluate();
object.addProperty(result.mProperty, result.mValue);
}
return object;
}
@Override
public LinkedList<com.drawbridge.vl.blocks.Block> getBlocks()
{
return new LinkedList<com.drawbridge.vl.blocks.Block>();
}
}