@singuerinc

2014-01-17

Abbreviate String

javascript, 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