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