Skip to content

Commit 828454d

Browse files
authored
Merge pull request quarkusio#48046 from gbourant/patch-2
Qute: rename doFilter to filter and make it public
2 parents fcaad06 + c479b97 commit 828454d

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/tag/UserTagArgumentsTest.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,22 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5+
import java.util.Map;
6+
import java.util.Set;
7+
import java.util.function.Predicate;
8+
59
import jakarta.inject.Inject;
610

711
import org.jboss.shrinkwrap.api.asset.StringAsset;
812
import org.junit.jupiter.api.Test;
913
import org.junit.jupiter.api.extension.RegisterExtension;
1014

15+
import io.quarkus.qute.Engine;
16+
import io.quarkus.qute.RawString;
1117
import io.quarkus.qute.Template;
18+
import io.quarkus.qute.TemplateExtension;
19+
import io.quarkus.qute.UserTagSectionHelper;
20+
import io.quarkus.qute.UserTagSectionHelper.Arguments;
1221
import io.quarkus.test.QuarkusUnitTest;
1322

1423
public class UserTagArgumentsTest {
@@ -19,14 +28,37 @@ public class UserTagArgumentsTest {
1928
.addAsResource(new StringAsset(
2029
"{_args.size}::{_args.empty}::{_args.get('name')}::{_args.asHtmlAttributes}::{_args.skip('foo','baz').size}::{#each _args.filter('name')}{it.value}{/each}"),
2130
"templates/tags/hello.txt")
22-
.addAsResource(new StringAsset("{#hello name=val /}"), "templates/foo.txt"));
31+
.addAsResource(new StringAsset("{#hello name=val /}"), "templates/foo.txt")
32+
.addAsResource(new StringAsset("{_args.startsWith('hx-','x-')}"),
33+
"templates/tags/startsWith.txt"));
2334

2435
@Inject
2536
Template foo;
2637

38+
@Inject
39+
Engine engine;
40+
2741
@Test
2842
public void testInjection() {
2943
assertEquals("1::false::Lu::name=\"Lu\"::1::Lu", foo.data("val", "Lu").render());
3044
}
3145

46+
@Test
47+
public void testNotBuiltInTemplateExtension() {
48+
assertEquals("hx-get=\"/endpoint\" x-data=\"{}\"",
49+
engine.parse("{#startsWith hx-get='/endpoint' x-data='{}' ignored-arg='ignored' /}").render());
50+
}
51+
52+
@TemplateExtension
53+
public static class Extensions {
54+
55+
public static RawString startsWith(UserTagSectionHelper.Arguments obj, String... startsWithPrefix) {
56+
Set<String> startsWithSet = Set.of(startsWithPrefix);
57+
Predicate<Map.Entry<String, Object>> predicate = e -> startsWithSet.stream()
58+
.anyMatch(k -> e.getKey().startsWith(k));
59+
return obj.filter(predicate).asHtmlAttributes();
60+
}
61+
62+
}
63+
3264
}

independent-projects/qute/core/src/main/java/io/quarkus/qute/UserTagSectionHelper.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,27 +208,27 @@ public Iterator<Entry<String, Object>> iterator() {
208208

209209
public Arguments skip(String... keys) {
210210
Set<String> keySet = Set.of(keys);
211-
return doFilter(e -> !keySet.contains(e.getKey()));
211+
return filter(e -> !keySet.contains(e.getKey()));
212212
}
213213

214214
public Arguments skipIdenticalKeyValue() {
215-
return doFilter(e -> !e.getKey().equals(e.getValue()));
215+
return filter(e -> !e.getKey().equals(e.getValue()));
216216
}
217217

218218
/**
219219
* Skip the first argument if it does not define a name.
220220
*/
221221
public Arguments skipIt() {
222-
return doFilter(e -> !e.getKey().equals(itKey));
222+
return filter(e -> !e.getKey().equals(itKey));
223223
}
224224

225225
public Arguments filter(String... keys) {
226226
Set<String> keySet = Set.of(keys);
227-
return doFilter(e -> keySet.contains(e.getKey()));
227+
return filter(e -> keySet.contains(e.getKey()));
228228
}
229229

230230
public Arguments filterIdenticalKeyValue() {
231-
return doFilter(e -> e.getKey().equals(e.getValue()));
231+
return filter(e -> e.getKey().equals(e.getValue()));
232232
}
233233

234234
// foo="1" bar="true" readonly="readonly"
@@ -247,7 +247,7 @@ public RawString asHtmlAttributes() {
247247
return new RawString(builder.toString());
248248
}
249249

250-
private Arguments doFilter(Predicate<Entry<String, Object>> predicate) {
250+
public Arguments filter(Predicate<Entry<String, Object>> predicate) {
251251
List<Entry<String, Object>> newArgs = new ArrayList<>(args.size());
252252
for (Entry<String, Object> e : args) {
253253
if (predicate.test(e)) {

0 commit comments

Comments
 (0)