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>(); } }