package io.vertx.ext.web.templ.rocker.impl;
import com.fizzed.rocker.Rocker;
import io.vertx.core.AsyncResult;
import io.vertx.core.Future;
import io.vertx.core.Handler;
import io.vertx.core.buffer.Buffer;
import io.vertx.ext.web.templ.rocker.RockerTemplateEngine;
import java.util.Map;
public class RockerTemplateEngineImpl implements RockerTemplateEngine {
private final String extension;
public RockerTemplateEngineImpl(String extension) {
this.extension = extension.charAt(0) == '.' ? extension : "." + extension;
}
@Override
public void render(Map<String, Object> context, String templateFile, Handler<AsyncResult<Buffer>> handler) {
try {
handler.handle(Future.succeededFuture(
Rocker.template(adjustLocation(templateFile))
.relaxedBind(context)
.render(VertxBufferOutput.FACTORY)
.getBuffer()));
} catch (final RuntimeException ex) {
handler.handle(Future.failedFuture(ex));
}
}
private String adjustLocation(String location) {
if (extension != null) {
if (!location.endsWith(extension)) {
location += extension;
}
}
return location;
}
}