Skip to content

Commit 0e4692a

Browse files
committed
Basic functionality working with two tests
1 parent 0a82efb commit 0e4692a

3 files changed

Lines changed: 21 additions & 16 deletions

File tree

src/main/java/com/hubspot/jinjava/interpret/JinjavaInterpreter.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,6 @@
7575
public class JinjavaInterpreter implements PyishSerializable {
7676
public static final String IGNORED_OUTPUT_FROM_EXTENDS_NOTE =
7777
"ignored_output_from_extends";
78-
public static final long NO_LIMIT = -1;
79-
8078
private final Multimap<String, BlockInfo> blocks = ArrayListMultimap.create();
8179
private final LinkedList<Node> extendParentRoots = new LinkedList<>();
8280
private final Map<String, RevertibleObject> revertibleObjects = new HashMap<>();
@@ -261,7 +259,7 @@ public String renderFlat(String template) {
261259
* @return rendered result
262260
*/
263261
public String render(String template) {
264-
return render(template, NO_LIMIT);
262+
return render(template, config.getMaxOutputSize());
265263
}
266264

267265
public String render(String template, long renderLimit) {
@@ -276,7 +274,7 @@ public String render(String template, long renderLimit) {
276274
* @return rendered result
277275
*/
278276
public String render(Node root) {
279-
return render(root, true, NO_LIMIT);
277+
return render(root, true, config.getMaxOutputSize());
280278
}
281279

282280
/**
@@ -288,7 +286,7 @@ public String render(Node root) {
288286
* @return
289287
*/
290288
public String render(Node root, boolean processExtendRoots) {
291-
return render(root, processExtendRoots, NO_LIMIT);
289+
return render(root, processExtendRoots, config.getMaxOutputSize());
292290
}
293291

294292
/**
@@ -315,11 +313,7 @@ public String render(Node root, long renderLimit) {
315313
* @return rendered result
316314
*/
317315
public String render(Node root, boolean processExtendRoots, long renderLimit) {
318-
long maxOutput = (renderLimit == NO_LIMIT)
319-
? config.getMaxOutputSize()
320-
: (Math.min(renderLimit, config.getMaxOutputSize()));
321-
OutputList output = new OutputList(maxOutput);
322-
316+
OutputList output = new OutputList(renderLimit);
323317
for (Node node : root.getChildren()) {
324318
lineNumber = node.getLineNumber();
325319
position = node.getStartPosition();
@@ -375,8 +369,8 @@ public String render(Node root, boolean processExtendRoots, long renderLimit) {
375369
return output.getValue();
376370
}
377371
}
378-
StringBuilder ignoredOutput = new StringBuilder();
379372

373+
StringBuilder ignoredOutput = new StringBuilder();
380374
// render all extend parents, keeping the last as the root output
381375
if (processExtendRoots) {
382376
Set<String> extendPaths = new HashSet<>();
@@ -441,6 +435,7 @@ public String render(Node root, boolean processExtendRoots, long renderLimit) {
441435
}
442436

443437
resolveBlockStubs(output);
438+
444439
if (ignoredOutput.length() > 0) {
445440
return (
446441
EagerReconstructionUtils.labelWithNotes(
@@ -456,7 +451,6 @@ public String render(Node root, boolean processExtendRoots, long renderLimit) {
456451
output.getValue()
457452
);
458453
}
459-
460454
return output.getValue();
461455
}
462456

src/main/java/com/hubspot/jinjava/lib/filter/RenderFilter.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ public String getName() {
2727
public Object filter(Object var, JinjavaInterpreter interpreter, String... args) {
2828
if (args.length > 0) {
2929
String firstArg = args[0];
30-
return interpreter.render(
31-
Objects.toString(var),
32-
NumberUtils.toLong(firstArg, JinjavaInterpreter.NO_LIMIT)
33-
);
30+
return interpreter.render(Objects.toString(var), NumberUtils.toLong(firstArg, 0));
3431
}
3532
return interpreter.render(Objects.toString(var));
3633
}

src/test/java/com/hubspot/jinjava/lib/filter/RenderFilterTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,18 @@ public void itRendersObject() {
2020

2121
assertThat(filter.filter(stringToRender, interpreter)).isEqualTo("world");
2222
}
23+
24+
@Test
25+
public void itRendersObjectWithinLimit() {
26+
String stringToRender = "{% if null %}Hello{% else %}world{% endif %}";
27+
28+
assertThat(filter.filter(stringToRender, interpreter, "5")).isEqualTo("world");
29+
}
30+
31+
@Test
32+
public void itDoesNotRenderObjectOverLimit() {
33+
String stringToRender = "{% if null %}Hello{% else %}world{% endif %}";
34+
35+
assertThat(filter.filter(stringToRender, interpreter, "4")).isEqualTo("");
36+
}
2337
}

0 commit comments

Comments
 (0)