abbreviate static method

String abbreviate(
  1. String str,
  2. int maxWidth, {
  3. int offset = 0,
})

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));
}