@Test public void itAllowsCamelCasedFilterNames() { jinjava = new Jinjava(); jinjava.getGlobalContext().registerFilter(new ReturnHelloFilter()); assertThat(jinjava.render("{{ 'test'|returnHello }}", new HashMap<>())).isEqualTo("Hello"); }
private RenderResult render(final Path path, final GraphContainer container) throws IOException { final Map<String, Object> context = this.createContext(container); try (final Stream<String> lines = Files.lines(path, Charset.defaultCharset())) { final String template = lines.collect(Collectors.joining("\n")); return withClassLoaderFix(() -> jinjava.renderForResult(template, context)); } } }
public JinjavaEngine(JinjavaConfig jinjavaConfig, ResourceLocator resourceLocator) { jinjava = new Jinjava(jinjavaConfig); jinjava.setResourceLocator(resourceLocator); context = jinjava.getGlobalContext(); }
/** * Creates a new interpreter instance using the global context and global config * * @return a new interpreter instance */ public JinjavaInterpreter newInterpreter() { return new JinjavaInterpreter(this, this.getGlobalContext(), this.getGlobalConfig()); }
@Before public void setup() { jinjava = new Jinjava(); jinjava.getGlobalContext().registerClasses(EscapeJsonFilter.class); }
String render(String sortExtra, Object... items) { Map<String, Object> context = new HashMap<>(); context.put("iterable", items); return jinjava.render("{% for item in iterable|sort" + sortExtra + " %}{{ item }}{% endfor %}", context); }
@Before public void setup() { interpreter = new Jinjava().newInterpreter(); tag = new RawTag(); }
@Test public void itResetsGlobalContextAfterRender() { Jinjava jinjava = new Jinjava(); Context globalContext = jinjava.getGlobalContext(); RenderResult result = jinjava.renderForResult("{{ foo + 1 }}", ImmutableMap.of("foo", 1)); assertThat(result.getOutput()).isEqualTo("2"); assertThat(result.getContext().getResolvedExpressions()).containsOnly("foo + 1"); assertThat(result.getContext().getResolvedValues()).containsOnly("foo"); assertThat(globalContext.getResolvedExpressions()).isEmpty(); assertThat(globalContext.getResolvedValues()).isEmpty(); } }
@Test public void itSetsFieldNameCaseForSyntaxErrorInFor() { RenderResult renderResult = new Jinjava().renderForResult("{% for item inna navigation %}{% endfor %}", ImmutableMap.of()); assertThat(renderResult.getErrors().get(0).getFieldName()).isEqualTo("item inna navigation"); }
@Before public void setup() { validationFilter = new ValidationFilter(); ELFunctionDefinition validationFunction = new ELFunctionDefinition("", "validation_test", ValidationModeTest.class, "validationTestFunction"); jinjava = new Jinjava(); jinjava.getGlobalContext().registerFilter(validationFilter); jinjava.getGlobalContext().registerFunction(validationFunction); interpreter = jinjava.newInterpreter(); context = interpreter.getContext(); validatingInterpreter = new JinjavaInterpreter(jinjava, context, JinjavaConfig.newBuilder().withValidationMode(true).build()); JinjavaInterpreter.pushCurrent(interpreter); }
@Test public void itAvoidsSimpleImportCycle() throws IOException { Jinjava jinjava = new Jinjava(); interpreter = new JinjavaInterpreter(jinjava, context, jinjava.getGlobalConfig()); interpreter.render(Resources.toString(Resources.getResource("tags/importtag/imports-self.jinja"), StandardCharsets.UTF_8)); assertThat(context.get("c")).isEqualTo("hello"); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("Rendering cycle detected:", "imports-self.jinja"); }
@Before public void setup() { locator = new ExtendsTagTestResourceLocator(); JinjavaConfig conf = new JinjavaConfig(); jinjava = new Jinjava(conf); jinjava.setResourceLocator(locator); }
public GenericInfoPanelItemProvider(NodeDao nodeDao, MeasurementsService measurementsService) { this.jinjava = withClassLoaderFix(Jinjava::new); this.nodeDao = Objects.requireNonNull(nodeDao); this.measurementsService = Objects.requireNonNull(measurementsService); this.jinjava.getGlobalContext().registerFunction(new ELFunctionDefinition("System", "currentTimeMillis", System.class, "currentTimeMillis")); }
@Before public void setup() { jinjava = new Jinjava(); jinjava.getGlobalContext().registerClasses(EscapeJsFilter.class); }
@Test public void testFileSizeFormatFilter() { assertThat(jinjava.render("{{12|filesizeformat}}", new HashMap<String, Object>())).isEqualTo("12 Bytes"); assertThat(jinjava.render("{{1000|filesizeformat}}", new HashMap<String, Object>())).isEqualTo("1.0 KB"); assertThat(jinjava.render("{{1024|filesizeformat(true)}}", new HashMap<String, Object>())).isEqualTo("1.0 KiB"); assertThat(jinjava.render("{{3531836|filesizeformat(true)}}", new HashMap<String, Object>())).isEqualTo("3.4 MiB"); }
@Before public void setup() { Locale.setDefault(Locale.ENGLISH); interpreter = new Jinjava().newInterpreter(); filter = new DateTimeFormatFilter(); d = ZonedDateTime.parse("2013-11-06T14:22:00.000+00:00[UTC]"); }
@Test public void itResetsGlobalContextAfterRender() { Jinjava jinjava = new Jinjava(); Context globalContext = jinjava.getGlobalContext(); RenderResult result = jinjava.renderForResult("{{ foo + 1 }}", ImmutableMap.of("foo", 1)); assertThat(result.getOutput()).isEqualTo("2"); assertThat(result.getContext().getResolvedExpressions()).containsOnly("foo + 1"); assertThat(result.getContext().getResolvedValues()).containsOnly("foo"); assertThat(globalContext.getResolvedExpressions()).isEmpty(); assertThat(globalContext.getResolvedValues()).isEmpty(); } }
@Test public void itLimitsOutputSize() { JinjavaConfig outputSizeLimitedConfig = JinjavaConfig.newBuilder().withMaxOutputSize(20).build(); String output = "123456789012345678901234567890"; RenderResult renderResult = new Jinjava().renderForResult(output, new HashMap<>()); assertThat(renderResult.getOutput()).isEqualTo(output); assertThat(renderResult.hasErrors()).isFalse(); renderResult = new Jinjava(outputSizeLimitedConfig).renderForResult(output, new HashMap<>()); assertThat(renderResult.getErrors().get(0).getMessage()).contains("OutputTooBigException"); }
@Before public void setup() { validationFilter = new ValidationFilter(); ELFunctionDefinition validationFunction = new ELFunctionDefinition("", "validation_test", ValidationModeTest.class, "validationTestFunction"); jinjava = new Jinjava(); jinjava.getGlobalContext().registerFilter(validationFilter); jinjava.getGlobalContext().registerFunction(validationFunction); interpreter = jinjava.newInterpreter(); context = interpreter.getContext(); validatingInterpreter = new JinjavaInterpreter(jinjava, context, JinjavaConfig.newBuilder().withValidationMode(true).build()); JinjavaInterpreter.pushCurrent(interpreter); }
@Test public void itAvoidsSimpleImportCycle() throws IOException { Jinjava jinjava = new Jinjava(); interpreter = new JinjavaInterpreter(jinjava, context, jinjava.getGlobalConfig()); interpreter.render(Resources.toString(Resources.getResource("tags/importtag/imports-self.jinja"), StandardCharsets.UTF_8)); assertThat(context.get("c")).isEqualTo("hello"); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("Rendering cycle detected:", "imports-self.jinja"); }