package com.github.mustachejava.codes;
import com.github.mustachejava.Code;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.TemplateContext;
import com.github.mustachejava.util.Node;
import java.io.Writer;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Default Mustache
*/
public class DefaultMustache extends DefaultCode implements Mustache {
private Code[] codes;
private boolean inited = false;
public DefaultMustache(TemplateContext tc, DefaultMustacheFactory df, Code[] codes, String name) {
super(tc, df, null, name, null);
setCodes(codes);
}
@Override
public Code[] getCodes() {
return codes;
}
public Writer run(Writer writer, Object[] scopes) {
if (codes != null) {
for (Code code : codes) {
writer = code.execute(writer, scopes);
}
}
return writer;
}
/**
* Invert this mustache given output text.
*
* @param text
* @return
*/
@Override
public Node invert(String text) {
return invert(new Node(), text, new AtomicInteger(0));
}
@Override
public void setCodes(Code[] newcodes) {
codes = newcodes;
}
@Override
public void identity(Writer writer) {
// No self output at the top level
runIdentity(writer);
}
@Override
public synchronized void init() {
if (!inited) {
inited = true;
super.init();
}
}
}