Skip to content

Commit

Permalink
feat:string filter
Browse files Browse the repository at this point in the history
  • Loading branch information
hashimzs committed Feb 17, 2025
1 parent 410cf0e commit 223526f
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ public Map<String, Filter> getFilters() {
filters.put("sha1", new Sha1Filter());
filters.put("sha512", new Sha512Filter());
filters.put("md5", new Md5Filter());
filters.put("string", new StringFilter());
return filters;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package io.kestra.core.runners.pebble.filters;

import io.pebbletemplates.pebble.error.PebbleException;
import io.pebbletemplates.pebble.template.EvaluationContext;
import io.pebbletemplates.pebble.template.PebbleTemplate;
import io.pebbletemplates.pebble.extension.Filter;
import java.util.List;
import java.util.Map;

public class StringFilter implements Filter {

@Override
public Object apply(Object input, Map<String, Object> args, PebbleTemplate self, EvaluationContext context, int lineNumber) throws PebbleException {
if (input == null) return null;

if (input instanceof String) return input;

return input.toString();
}

@Override
public List<String> getArgumentNames() {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package io.kestra.core.runners.pebble.filters;

import io.kestra.core.exceptions.IllegalVariableEvaluationException;
import io.kestra.core.junit.annotations.KestraTest;
import io.kestra.core.runners.VariableRenderer;
import jakarta.inject.Inject;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.Map;
import java.util.stream.Stream;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;

@KestraTest
public class StringFilterTest {

@Inject
VariableRenderer variableRenderer;

static Stream<Arguments> source() {
return Stream.of(
Arguments.of("{{ 12.3 | string | className }}", String.class.getName()),
Arguments.of("{{ {\"field\":\"hello\"} | string | className }}", String.class.getName())
);
}

@ParameterizedTest
@MethodSource("source")
void run(String exp, String expected) throws IllegalVariableEvaluationException {
String render = variableRenderer.render(exp, Map.of());
assertThat(render, is(expected));
}
}

0 comments on commit 223526f

Please sign in to comment.