Skip to content

Commit

Permalink
Merge pull request #80 from HubSpot/pass-args-to-exp-tests
Browse files Browse the repository at this point in the history
pass arguments from selectattr to expression tests
  • Loading branch information
boulter authored Sep 21, 2016
2 parents 7b7bc09 + df7942d commit 5ce354e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.hubspot.jinjava.lib.filter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.hubspot.jinjava.doc.annotations.JinjavaDoc;
Expand Down Expand Up @@ -41,6 +42,8 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args)
throw new InterpretException(getName() + " filter requires an attr to filter on", interpreter.getLineNumber());
}

String[] expArgs = new String[]{};

String attr = args[0];

ExpTest expTest = interpreter.getContext().getExpTest("truthy");
Expand All @@ -49,14 +52,18 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args)
if (expTest == null) {
throw new InterpretException("No expression test defined with name '" + args[1] + "'", interpreter.getLineNumber());
}

if (args.length > 2) {
expArgs = Arrays.copyOfRange(args, 2, args.length);
}
}

ForLoop loop = ObjectIterator.getLoop(var);
while (loop.hasNext()) {
Object val = loop.next();
Object attrVal = interpreter.resolveProperty(val, attr);

if (expTest.evaluate(attrVal, interpreter)) {
if (expTest.evaluate(attrVal, interpreter, (Object[]) expArgs)) {
result.add(val);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,13 @@ public void selectAttrWithExp() {
.isEqualTo("[2]");
}

@Test
public void selectAttrWithIsEqualToExp() {
assertThat(jinjava.render("{{ users|selectattr('email', 'equalto', 'bar@bar.com') }}", new HashMap<String, Object>()))
.isEqualTo("[1]");
}


public static class User {
private int num;
private boolean isActive;
Expand Down

0 comments on commit 5ce354e

Please sign in to comment.