@Override public Object filter(Object object, JinjavaInterpreter interpreter, String... arg) { if (arg.length != 1) { throw new InterpretException("filter cut expects 1 arg >>> " + arg.length); } String cutee = arg[0]; String origin = Objects.toString(object, ""); return StringUtils.replace(origin, cutee, ""); }
@Override public Object filter(Object object, JinjavaInterpreter interpreter, String... arg) { if (arg.length != 1) { throw new InterpretException("filter add expects 1 arg >>> " + arg.length); } try { BigDecimal base = new BigDecimal(Objects.toString(object)); BigDecimal addend = new BigDecimal(Objects.toString(arg[0])); return base.add(addend); } catch (Exception e) { throw new InterpretException("filter add error", e); } }
protected static ChronoUnit getTemporalUnit(String temporalUnit) { String lowercase = temporalUnit.toLowerCase(); if (!unitMap.containsKey(temporalUnit)) { throw new InterpretException(String.format("%s is not a valid temporal unit", lowercase)); } return unitMap.get(lowercase); } }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { try { if (var instanceof String) { return OBJECT_MAPPER.readValue((String) var, HashMap.class); } else { throw new InterpretException(String.format("%s filter requires a string parameter", getName())); } } catch (IOException e) { throw new InterpretException("Could not convert JSON string to object in `fromjson` filter.", e, interpreter.getLineNumber()); } }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { try { return OBJECT_MAPPER.writeValueAsString(var); } catch (JsonProcessingException e) { throw new InterpretException("Could not write object as string for `tojson` filter.", e, interpreter.getLineNumber()); } }
@Override public boolean evaluate(Object var, JinjavaInterpreter interpreter, Object... args) { if (args.length == 0) { throw new InterpretException(getName() + " test requires 1 argument"); } return var == args[0]; }
@Override public boolean evaluate(Object var, JinjavaInterpreter interpreter, Object... args) { if (var == null) { return false; } if (!Number.class.isAssignableFrom(var.getClass())) { return false; } if (args.length == 0 || args[0] == null || !Number.class.isAssignableFrom(args[0].getClass())) { throw new InterpretException(getName() + " test requires a numeric argument"); } return ((Number) var).intValue() % ((Number) args[0]).intValue() == 0; }
protected long parseDiffAmount(String... args) { if (args.length < 2) { throw new InterpretException(String.format("%s filter requires a number and a string parameter", getName())); } String firstArg = args[0]; Long diff = Longs.tryParse(firstArg); if (diff == null) { throw new InterpretException(String.format("%s filter requires a number parameter as first arg", getName())); } return diff; }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { if (!(var instanceof String)) { throw new InterpretException(String.format("%s filter requires a string as input", getName())); } if (args.length < 1) { throw new InterpretException(String.format("%s filter requires a datetime format parameter", getName())); } return Functions.stringToTime((String) var, args[0]); }
@Override public boolean evaluate(Object var, JinjavaInterpreter interpreter, Object... args) { if (!super.evaluate(var, interpreter, args)) { return false; } if (args.length == 0 || args[0] == null) { throw new InterpretException(getName() + " test requires an argument"); } return ((String) var).contains(args[0].toString()); }
protected ChronoUnit parseChronoUnit(String... args) { if (args.length < 2) { throw new InterpretException(String.format("%s filter requires a number and a string parameter", getName())); } String secondArg = args[1].toLowerCase(); return getTemporalUnit(secondArg); }
@Override public boolean evaluate(Object var, JinjavaInterpreter interpreter, Object... args) { if (!super.evaluate(var, interpreter, args)) { return false; } if (args.length == 0 || args[0] == null) { throw new InterpretException(getName() + " test requires an argument"); } return ((String) var).startsWith(args[0].toString()); }
@Override public boolean evaluate(Object var, JinjavaInterpreter interpreter, Object... args) { if (args.length == 0) { throw new InterpretException(getName() + " test requires 1 argument"); } return BooleanOperations.eq(TYPE_CONVERTER, var, args[0]); }
public static boolean isQuoted(String s) { if (startsWith(s, "'")) { if (!endsWith(s, "'")) { throw new InterpretException("Unbalanced quotes: " + s); } return true; } else if (startsWith(s, "\"")) { if (!endsWith(s, "\"")) { throw new InterpretException("Unbalanced quotes: " + s); } return true; } return false; }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, Object[] args, Map<String, Object> kwargs) { if (args.length < 2) { throw new InterpretException(String.format("%s filter requires a datetime and a string parameter", getName())); } ZonedDateTime start = getZonedDateTime(var); ZonedDateTime end = getZonedDateTime(args[0]); Object args1 = args[1]; if (!(args1 instanceof String)) { throw new InterpretException(String.format("%s filter requires a string as the second parameter", getName())); } TemporalUnit temporalUnit = BaseDateFilter.getTemporalUnit((String) args[1]); return temporalUnit.between(start, end); }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { if (args.length == 0) { throw new InterpretException(getName() + " requires an attr name to use", interpreter.getLineNumber()); } return interpreter.resolveProperty(var, args[0]); }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { List<Object> result = new ArrayList<>(); if (args.length == 0) { throw new InterpretException(getName() + " requires an exp test to filter on", interpreter.getLineNumber()); } ExpTest expTest = interpreter.getContext().getExpTest(args[0]); if (expTest == null) { throw new InterpretException("No exp test defined for name '" + args[0] + "'", interpreter.getLineNumber()); } ForLoop loop = ObjectIterator.getLoop(var); while (loop.hasNext()) { Object val = loop.next(); if (!expTest.evaluate(val, interpreter)) { result.add(val); } } return result; }
@Override public Object filter(Object var, JinjavaInterpreter interpreter, String... args) { ForLoop loop = ObjectIterator.getLoop(var); if (args.length == 0) { throw new InterpretException(getName() + " requires number of slices argument", interpreter.getLineNumber()); } int slices = NumberUtils.toInt(args[0], 3); return Iterators.paddedPartition(loop, slices); }
@Override public OutputNode render(JinjavaInterpreter interpreter) { if (interpreter.getContext().isValidationMode() && !tag.isRenderedInValidationMode()) { return new RenderedOutputNode(""); } try { return tag.interpretOutput(this, interpreter); } catch (InterpretException e) { throw e; } catch (Exception e) { throw new InterpretException("Error rendering tag", e, master.getLineNumber(), master.getStartPosition()); } }
@Override public String interpret(TagNode tagNode, JinjavaInterpreter interpreter) { HelperStringTokenizer tokenizer = new HelperStringTokenizer(tagNode.getHelpers()); if (!tokenizer.hasNext()) { throw new TemplateSyntaxException(tagNode.getMaster().getImage(), "Tag 'extends' expects template path", tagNode.getLineNumber(), tagNode.getStartPosition()); } String path = interpreter.resolveString(tokenizer.next(), tagNode.getLineNumber(), tagNode.getStartPosition()); interpreter.getContext().getExtendPathStack().push(path, tagNode.getLineNumber(), tagNode.getStartPosition()); try { String template = interpreter.getResource(path); Node node = interpreter.parse(template); interpreter.getContext().addDependency("coded_files", path); interpreter.addExtendParentRoot(node); return ""; } catch (IOException e) { throw new InterpretException(e.getMessage(), e, tagNode.getLineNumber(), tagNode.getStartPosition()); } }