abbreviate static method
Abbreviate a string to maxWidth by truncating the
string and adding '...' to then truncated string.
Strings.abbreviate('Hello World', 6) == 'Hel...'
The minimum value for maxWidth is 4
Implementation
static String abbreviate(final String str, final int maxWidth,
{int offset = 0}) {
if (maxWidth < 4) {
throw IllegalArgumentException('Minimum abbreviation width is 4');
}
if (str.length <= maxWidth) {
return str;
}
if (offset > str.length) {
offset = str.length;
}
if (str.length - offset < maxWidth - 3) {
offset = str.length - (maxWidth - 3);
}
final abrevMarker = '...';
if (offset <= 4) {
return str.substring(0, maxWidth - 3) + abrevMarker;
}
if (maxWidth < 7) {
throw IllegalArgumentException(
'Minimum abbreviation width with offset is 7');
}
if (offset + maxWidth - 3 < str.length) {
return abrevMarker + abbreviate(str.substring(offset), maxWidth - 3);
}
return abrevMarker + str.substring(str.length - (maxWidth - 3));
}