package de.neuland.jade4j.compiler;
import java.io.StringWriter;
import java.io.Writer;
import de.neuland.jade4j.exceptions.JadeCompilerException;
import de.neuland.jade4j.expression.ExpressionHandler;
import de.neuland.jade4j.model.JadeModel;
import de.neuland.jade4j.parser.node.Node;
import de.neuland.jade4j.template.JadeTemplate;
public class Compiler {
private final Node rootNode;
private boolean prettyPrint;
private JadeTemplate template = new JadeTemplate();
private ExpressionHandler expressionHandler;
public Compiler(Node rootNode) {
this.rootNode = rootNode;
}
public String compileToString(JadeModel model) throws JadeCompilerException {
StringWriter writer = new StringWriter();
compile(model, writer);
return writer.toString();
}
public void compile(JadeModel model, Writer w) throws JadeCompilerException {
IndentWriter writer = new IndentWriter(w);
writer.setUseIndent(prettyPrint);
rootNode.execute(writer, model, template);
}
public void setPrettyPrint(boolean prettyPrint) {
this.prettyPrint = prettyPrint;
}
public void setTemplate(JadeTemplate jadeTemplate) {
this.template = jadeTemplate;
}
public void setExpressionHandler(ExpressionHandler expressionHandler) {
this.expressionHandler = expressionHandler;
}
}