package com.google.sitebricks;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Singleton;
import com.google.sitebricks.compiler.TemplateCompiler;
import java.util.Map;
import java.util.Set;
@Singleton
public class DefaultTemplateSystem implements TemplateSystem {
private static final String DEFAULT = "flat";
private final Map<String, Class<? extends TemplateCompiler>> templateCompilers;
private final Injector injector;
@Inject
public DefaultTemplateSystem(Map<String, Class<? extends TemplateCompiler>> templateCompilers, Injector injector) {
this.templateCompilers = templateCompilers;
this.injector = injector;
}
@Override
public TemplateCompiler compilerFor(String templateName) {
String extension = templateName.substring(templateName.lastIndexOf(".") + 1);
Class<? extends TemplateCompiler> type = templateCompilers.get(extension);
if (type == null)
type = templateCompilers.get(DEFAULT);
return injector.getInstance(type);
}
@Override
public String[] getTemplateExtensions() {
Set<String> keys = templateCompilers.keySet();
if (keys.isEmpty()) {
return new String[0];
}
String[] extensions = new String[keys.size()];
int i = 0;
for (String ext : keys) {
extensions[i++] = "%s." + ext;
}
return extensions;
}
}