package com.drawbridge.jsengine.ast; import java.util.LinkedList; import com.drawbridge.jsengine.Scope; import com.drawbridge.jsengine.jsobjects.JSString; import com.drawbridge.jsengine.jsobjects.JSType; import com.drawbridge.vl.blocks.BlockPrimitive; import com.google.caja.parser.js.StringLiteral; public class StringLiteralEvaluator extends Evaluator { String stringValue; public StringLiteralEvaluator(Evaluator parent, Scope scope, StringLiteral stringLiteral) { super(parent, scope, stringLiteral.getFilePosition()); stringValue = StringLiteral.getUnquotedValueOf(stringLiteral.getValue()); } @Override public JSType evaluate() throws EvaluatorException { return new JSString(stringValue); } public static boolean hasQuotes(String string) { return (string.substring(0, 1).equals("\"") && string.substring(string.length() - 1, string.length()).equals("\"")); } public void putChange(String string) { stringValue = string; } public Object getJS() { return stringValue; } @Override public LinkedList<com.drawbridge.vl.blocks.Block> getBlocks() { LinkedList<com.drawbridge.vl.blocks.Block> results = new LinkedList<com.drawbridge.vl.blocks.Block>(); results.add(new BlockPrimitive(getFilePosition(), this, stringValue)); return results; } @Override public boolean compare(Evaluator e) { if (!e.getClass().equals(getClass())) return false; if (mChildren.size() != e.mChildren.size()) return false; StringLiteralEvaluator sle = (StringLiteralEvaluator) e; if (sle.stringValue.equals(stringValue) && e.getFilePosition().equals(getFilePosition())) return true; else return false; } }