/** * Create a template engine using defaults * * @return the engine */ static PebbleTemplateEngine create(Vertx vertx) { return new PebbleTemplateEngineImpl(vertx); }
@Override public PebbleTemplateEngine setExtension(String extension) { doSetExtension(extension); return this; }
public PebbleTemplateEngineImpl(Vertx vertx) { this(new PebbleEngine.Builder().loader(new PebbleVertxLoader(vertx)).cacheActive(false).build()); }
@Override public void render(Map<String, Object> context, String templateFile, Handler<AsyncResult<Buffer>> handler) { try { PebbleTemplate template = isCachingEnabled() ? cache.get(templateFile) : null; if (template == null) { // real compile final String loc = adjustLocation(templateFile); template = pebbleEngine.getTemplate(loc); if (isCachingEnabled()) { cache.put(templateFile, template); } } // special key for lang selection final String lang = (String) context.get("lang"); // rendering final StringWriter stringWriter = new StringWriter(); template.evaluate(stringWriter, context, lang == null ? Locale.getDefault() : Locale.forLanguageTag(lang)); handler.handle(Future.succeededFuture(Buffer.buffer(stringWriter.toString()))); } catch (final Exception ex) { handler.handle(Future.failedFuture(ex)); } }
@Test public void customBuilderShouldRender(TestContext should) { final Async test = should.async(); final TemplateEngine engine = PebbleTemplateEngine.create(new PebbleEngine.Builder().extension(new TestExtension()).loader(new PebbleVertxLoader(vertx)).build()); final JsonObject context = new JsonObject() .put("foo", "badger") .put("bar", "fox") .put("context", new JsonObject().put("path", "/test-pebble-template5.peb")); engine.render(context, "src/test/filesystemtemplates/test-pebble-template5.peb", render -> { should.assertTrue(render.succeeded()); should.assertEquals("Hello badger and foxString is TESTRequest path is /test-pebble-template5.peb", render.result().toString()); test.complete(); }); }
/** * Create a template engine using a custom Builder, e.g. if * you want use custom Filters or Functions. * * @return the engine */ @GenIgnore static PebbleTemplateEngine create(PebbleEngine engine) { return new PebbleTemplateEngineImpl(engine); }