@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); } }
@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()); } }
@JtwigFunctionDeclaration(name = "defined") public class Defined implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); return arguments[0] != null; } }
@JtwigFunctionDeclaration(name = "null") public class IsNull implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); return arguments[0] == null; } }
@JtwigFunctionDeclaration(name = "concatenate", aliases = { "concat" }) public class Concatenate implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { String result = ""; for (Object obj : arguments) if (obj != null) result += obj.toString(); return result; } }
@JtwigFunctionDeclaration(name = "format") public class Format implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(greaterThan(0)); if (arguments[0] == null) return null; String input = arguments[0].toString(); return String.format(input, copyOfRange(arguments, 1, arguments.length)); } }
@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(); } }
@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; } }
@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]; } }
@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(); } }
@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(); } }
@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; } }
@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())); } }
@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())); } }
@JtwigFunctionDeclaration(name = "nl2br") public class Nl2Br 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().replace("\n", "<br />"); } }
@JtwigFunctionDeclaration(name = "odd") public class Odd 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; } }
@JtwigFunctionDeclaration(name = "title") public class Title implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); if (arguments[0] == null) return null; return WordUtils.capitalize((String) arguments[0]); } }
@JtwigFunctionDeclaration(name = "date_format") public class DateFormat implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(between(1, 2)) .withArgument(0, instanceOf(Date.class)); java.text.DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (arguments.length == 2) dateFormat = new SimpleDateFormat(arguments[1].toString()); return dateFormat.format(arguments[0]); } }
@JtwigFunctionDeclaration(name = "divisable by") public class DivisableBy implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(2)) .withArgument(0, instanceOf(Number.class)) .withArgument(1, instanceOf(Number.class)); double value1 = ((Number) arguments[0]).doubleValue(); double value2 = ((Number) arguments[1]).doubleValue(); return value1 % value2 == 0; } }
@JtwigFunctionDeclaration(name = "length") public class Length implements JtwigFunction { @Override public Object execute(Object... arguments) throws FunctionException { requires(arguments) .withNumberOfArguments(equalTo(1)); if ((arguments[0] instanceof Iterable) || arguments[0].getClass().isArray()) return new ObjectIterator(arguments[0]).size(); else if (arguments[0] instanceof Map) return ((Map) arguments[0]).size(); else if (arguments[0] instanceof String) return ((String) arguments[0]).length(); else return 0; } }