private String checkContext(String param, Context context) { Object var = context.get(param); if (var != null) { return (String) var; } return param; }
private String checkContext(String param, Context context) { Object var = context.get(param); if (var != null) { return (String) var; } return param; }
@Override public int getOrder() { return (int) (long) this.renderResult.getContext().get("order", 0L); } }
@Override public String getTitle() { return (String) this.renderResult.getContext().get("title", "No Title defined"); }
@Override public int getOrder() { return (int) (long) this.renderResult.getContext().get("order", 0L); } }
@Override public String getTitle() { return (String) this.renderResult.getContext().get("title", "No Title defined"); }
public void endRender(String name) { RenderTimings renderTimings = (RenderTimings) getContext().get("request"); if (renderTimings != null) { renderTimings.end(this, name); } }
public void endRender(String name, Map<String, Object> data) { RenderTimings renderTimings = (RenderTimings) getContext().get("request"); if (renderTimings != null) { renderTimings.end(this, name, data); } } }
public void startRender(String name) { RenderTimings renderTimings = (RenderTimings) getContext().get("request"); if (renderTimings != null) { renderTimings.start(this, name); } }
@Test public void itAvoidsNestedImportCycle() throws IOException { Jinjava jinjava = new Jinjava(); interpreter = new JinjavaInterpreter(jinjava, context, jinjava.getGlobalConfig()); interpreter.render(Resources.toString(Resources.getResource("tags/importtag/a-imports-b.jinja"), StandardCharsets.UTF_8)); assertThat(context.get("a")).isEqualTo("foo"); assertThat(context.get("b")).isEqualTo("bar"); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("Rendering cycle detected:", "b-imports-a.jinja"); }
@Test public void itAvoidsNestedImportCycle() throws IOException { Jinjava jinjava = new Jinjava(); interpreter = new JinjavaInterpreter(jinjava, context, jinjava.getGlobalConfig()); interpreter.render(Resources.toString(Resources.getResource("tags/importtag/a-imports-b.jinja"), StandardCharsets.UTF_8)); assertThat(context.get("a")).isEqualTo("foo"); assertThat(context.get("b")).isEqualTo("bar"); assertThat(interpreter.getErrorsCopy().get(0).getMessage()).contains("Rendering cycle detected:", "b-imports-a.jinja"); }
@Test public void importedContextDoesntExposePrivateMacros() { fixture("import"); assertThat(context.get("_private")).isNull(); }
@Test public void importedContextDoesntExposePrivateMacros() { fixture("import"); assertThat(context.get("_private")).isNull(); }
@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"); }
@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"); }
@Override public String interpret(TagNode tagNode, JinjavaInterpreter interpreter) { if (StringUtils.isBlank(tagNode.getHelpers())) { throw new TemplateSyntaxException(tagNode.getMaster().getImage(), "Tag 'ifchanged' expects a variable parameter", tagNode.getLineNumber(), tagNode.getStartPosition()); } boolean isChanged = true; String var = tagNode.getHelpers().trim(); Object older = interpreter.getContext().get(LASTKEY + var); Object test = interpreter.retraceVariable(var, tagNode.getLineNumber(), tagNode.getStartPosition()); if (older == null) { if (test == null) { isChanged = false; } } else if (older.equals(test)) { isChanged = false; } interpreter.getContext().put(LASTKEY + var, test); if (isChanged) { StringBuilder sb = new StringBuilder(); for (Node node : tagNode.getChildren()) { sb.append(node.render(interpreter)); } return sb.toString(); } return ""; }
@Test public void itSupportsListAppendFunc() throws Exception { context.put("show_count", Lists.newArrayList("foo")); context.put("show", "bar"); TagNode tagNode = (TagNode) fixture("set-list-append"); tag.interpret(tagNode, interpreter); List<String> thelist = (List<String>) context.get("show_count"); assertThat(thelist).containsExactly("foo", "bar"); }
@Test public void itSupportsListSetFunc() throws Exception { context.put("show_count", Lists.newArrayList("foo")); context.put("show", "bar"); TagNode tagNode = (TagNode) fixture("set-list-modify"); tag.interpret(tagNode, interpreter); List<String> thelist = (List<String>) context.get("show_count"); assertThat(thelist).containsExactly("bar"); }
@Test public void itSupportsListSetFunc() throws Exception { context.put("show_count", Lists.newArrayList("foo")); context.put("show", "bar"); TagNode tagNode = (TagNode) fixture("set-list-modify"); tag.interpret(tagNode, interpreter); List<String> thelist = (List<String>) context.get("show_count"); assertThat(thelist).containsExactly("bar"); }
@Test public void itSupportsListAppendFunc() throws Exception { context.put("show_count", Lists.newArrayList("foo")); context.put("show", "bar"); TagNode tagNode = (TagNode) fixture("set-list-append"); tag.interpret(tagNode, interpreter); List<String> thelist = (List<String>) context.get("show_count"); assertThat(thelist).containsExactly("foo", "bar"); }