This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package fr.cnd.compositor.blocks.pebble;
|
||||
|
||||
import io.pebbletemplates.pebble.extension.AbstractExtension;
|
||||
import io.pebbletemplates.pebble.extension.Filter;
|
||||
import io.pebbletemplates.pebble.extension.Function;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
@@ -12,8 +13,18 @@ public class PebbleBlocksExtension extends AbstractExtension {
|
||||
|
||||
@Inject
|
||||
PebbleSlotFunction pebbleSlotFunction;
|
||||
|
||||
@Inject
|
||||
PebbleJsonFilter pebbleJsonFilter;
|
||||
|
||||
@Override
|
||||
public Map<String, Function> getFunctions() {
|
||||
return Map.of("slot", pebbleSlotFunction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Filter> getFilters() {
|
||||
return Map.of("json", pebbleJsonFilter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package fr.cnd.compositor.blocks.pebble;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.pebbletemplates.pebble.error.PebbleException;
|
||||
import io.pebbletemplates.pebble.extension.Filter;
|
||||
import io.pebbletemplates.pebble.extension.escaper.SafeString;
|
||||
import io.pebbletemplates.pebble.template.EvaluationContext;
|
||||
import io.pebbletemplates.pebble.template.PebbleTemplate;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ApplicationScoped
|
||||
public class PebbleJsonFilter implements Filter {
|
||||
|
||||
@Inject
|
||||
ObjectMapper objectMapper;
|
||||
|
||||
@Override
|
||||
public Object apply(Object input, Map<String, Object> args, PebbleTemplate self, EvaluationContext context, int lineNumber) {
|
||||
try {
|
||||
return new SafeString(objectMapper.writeValueAsString(input));
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new PebbleException(e, "Failed to serialize object to JSON", lineNumber, self.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getArgumentNames() {
|
||||
return List.of();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user