package de.neuland.jade4j.parser.node;
import org.apache.commons.lang3.StringEscapeUtils;
import de.neuland.jade4j.compiler.IndentWriter;
import de.neuland.jade4j.exceptions.ExpressionException;
import de.neuland.jade4j.exceptions.JadeCompilerException;
import de.neuland.jade4j.model.JadeModel;
import de.neuland.jade4j.template.JadeTemplate;
public class ExpressionNode extends Node {
private boolean escape;
private boolean buffer;
public void setEscape(boolean escape) {
this.escape = escape;
}
public void setBuffer(boolean buffer) {
this.buffer = buffer;
}
@Override
public void execute(IndentWriter writer, JadeModel model, JadeTemplate template) throws JadeCompilerException {
try {
Object result = template.getExpressionHandler().evaluateExpression(getValue(), model);
if (result == null || !buffer) {
return;
}
String string = result.toString();
if (escape) {
string = StringEscapeUtils.escapeHtml4(string);
}
writer.append(string);
if (hasBlock()) {
writer.increment();
block.execute(writer, model, template);
writer.decrement();
writer.newline();
}
} catch (ExpressionException e) {
throw new JadeCompilerException(this, template.getTemplateLoader(), e);
}
}
@Override
public void setValue(String value) {
super.setValue(value.trim());
}
}