package com.google.sitebricks.compiler.template;
import java.util.Set;
import com.google.common.collect.ImmutableSet;
import com.google.sitebricks.Renderable;
import com.google.sitebricks.Respond;
import com.google.sitebricks.Template;
public abstract class AbstractMagicTemplateCompiler implements MagicTemplateCompiler {
public Renderable compile(final Class<?> page, final Template sitebricksTemplate) {
return new Renderable() {
@Override
public void render(Object bound, Respond respond) {
assert page.isInstance(bound);
//
// 1. Transform text to XHTML
// 2. Process the XHTML however the client wishes
// 3. Blow the processed XHTML out of pipe
//
respond.write(process(page, bound, transform(sitebricksTemplate)));
}
@Override
public <T extends Renderable> Set<T> collect(Class<T> clazz) {
return ImmutableSet.of();
}
};
}
public Template transform(Template sitebricksTemplate) {
return sitebricksTemplate;
}
public abstract String process(Class<?> page, Object bound, Template sitebricksTemplate);
}