Abbreviate String

“Abbreviate” nos permite abreviar una cadena de texto usando puntos suspensivos.
Es una conversión de la función StringUtils.abbreviate de as3commons pero para Javascript.

function abbreviate(str, offset, maxWidth){

  if(str == null) return str;
  if(maxWidth < 4) throw new Error('Minimum 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);
  }
  if (offset <= 4) return str.substring(0, maxWidth - 3) + "...";
  if (maxWidth < 7)
    throw new Error("Minimum width with offset is 7");

  if ((offset + (maxWidth - 3)) < str.length){
    var a = abbreviate(str.substring(offset), 0, maxWidth - 3);
    return "..." + a;
  }

  return "..." + str.substring(str.length - (maxWidth - 3));
}

abbreviate("abcdefghijklmno", 0, 10) // "abcdefg..."
abbreviate("abcdefghijklmno", 8, 10) // "...ijklmno"

Demo