package com.github.mustachejava.codes;
import com.github.mustachejava.DefaultMustacheFactory;
import com.github.mustachejava.Mustache;
import com.github.mustachejava.TemplateContext;
import java.io.Writer;
import java.util.List;
import java.util.concurrent.Callable;
/**
* Runs the enclosed template once if the value is falsey.
*/
public class NotIterableCode extends IterableCode {
public NotIterableCode(TemplateContext templateContext, DefaultMustacheFactory df, Mustache mustache, String variable) {
super(templateContext, df, mustache, variable, "^");
}
@Override
public Writer execute(Writer writer, final List<Object> scopes) {
Object resolved = get(scopes);
writer = handle(writer, resolved, scopes);
appendText(writer);
return writer;
}
protected Writer handle(Writer writer, Object resolved, List<Object> scopes) {
if (resolved instanceof Callable) {
writer = handleCallable(writer, (Callable) resolved, scopes);
} else {
writer = execute(writer, resolved, scopes);
}
return writer;
}
@Override
protected Writer execute(Writer writer, Object resolve, List<Object> scopes) {
return oh.falsey(this, writer, resolve, scopes);
}
@Override
public Writer next(Writer writer, Object object, List<Object> scopes) {
return run(writer, scopes);
}
}