@JtwigFunction(name = "odd") public boolean odd(@Parameter int number) { return number % 2 == 1; }
@JtwigFunctionDeclaration(name = "upper") public class Upper implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); if (arguments[0] == null) return null; return arguments[0].toString().toUpperCase(); } }
@JtwigFunction(name = "even") public boolean even(@Parameter int number) { return number % 2 == 0; }
@JtwigFunctionDeclaration(name = "lower") public class Lower implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); if (arguments[0] == null) return null; return arguments[0].toString().toLowerCase(); } }
@JtwigFunction(name = "null") public boolean isNull(@Parameter Object input) { return input == null || input instanceof Undefined; }
@JtwigFunctionDeclaration(name = "even") public class Even implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)) .withArgument(0, instanceOf(Number.class)); int value = ((Number) arguments[0]).intValue(); return value % 2 == 0; } }
@JtwigFunction(name = "default") public Object defaultFunction (@Parameter Object input, @Parameter Object defaultValue) { if (input == null || input.equals(UNDEFINED)) return defaultValue; else return input; }
@JtwigFunctionDeclaration(name = "split") public class Split implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(2)); if (arguments[0] == null) return null; if (arguments[1] == null) return arguments[0]; return asList(arguments[0].toString().split(arguments[1].toString())); } }
@JtwigFunction(name = "sort") public List sort (@Parameter List input) { Collections.sort(input); return input; }
@JtwigFunctionDeclaration(name = "convert_encoding") public class ConvertEncoding implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(3)); return new String(arguments[0].toString().getBytes(forName(arguments[1].toString())), forName(arguments[2].toString())); } }
@JtwigFunction(name = "abs") public Double abs (@Parameter Double input) { return Math.abs(input); } @JtwigFunction(name = "abs")
@JtwigFunctionDeclaration(name = "striptags") public class StripTags implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(between(1, 2)); String input = arguments[0].toString(); String allowed = arguments.length == 2 ? arguments[1].toString() : ""; return stripTags(input, allowed); } }
@JtwigFunction(name = "length") public int length (@Parameter Object input) { if (input instanceof String) return ((String) input).length(); else return 1; }
@JtwigFunctionDeclaration(name = "keys") public class MapKeys implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)) .withArgument(0, instanceOf(Map.class)); return new ArrayList(((Map)arguments[0]).keySet()); } }
@JtwigFunction(name = "abs") public Long abs (@Parameter Long input) { return Math.abs(input); } @JtwigFunction(name = "abs")
@JtwigFunctionDeclaration(name = "trim") public class Trim implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); if (arguments[0] == null) return null; return arguments[0].toString().trim(); } }
@JtwigFunction(name = "abs") public Integer abs (@Parameter Integer input) { return Math.abs(input); } @JtwigFunction(name = "round")
@JtwigFunctionDeclaration(name = "iterable") public class IsIterable implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); return (arguments[0] instanceof Iterable) || arguments[0].getClass().isArray() || arguments[0] instanceof Map; } }
@JtwigFunction(name = "concat", aliases = { "concatenate" }) public String concatenate (@Parameter String... pieces) { StringBuilder builder = new StringBuilder(); for (String piece : pieces) { if (piece != null) builder.append(piece); } return builder.toString(); }
@JtwigFunctionDeclaration(name = "default") public class Default implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(2)); if (arguments[0] == null) return arguments[1]; else return arguments[0]; } }