package ca.uhn.fhir.narrative.template.filters;
class Truncate extends Filter {
/*
* truncate(input, length = 50, truncate_string = "...")
*
* Truncate a string down to x characters
*/
@Override
public Object apply(Object value, Object... params) {
if (value == null) {
return "";
}
String text = super.asString(value);
int length = 50;
String truncateString = "...";
if (params.length >= 1) {
length = super.asNumber(super.get(0, params)).intValue();
}
if (params.length >= 2) {
truncateString = super.asString(super.get(1, params));
}
if (truncateString.length() >= length) {
return truncateString;
}
if (length == text.length()) {
return text;
}
if (length >= (text.length() + truncateString.length())) {
return text;
}
int remainingChars = length - truncateString.length();
return text.substring(0, remainingChars) + truncateString;
}
}