All files / libs truncate-string.js

93.75% Statements 15/16
92.3% Branches 12/13
100% Functions 1/1
93.75% Lines 15/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48                      29x 2x       27x 1x       26x 18x       8x 8x           8x 3x     5x 5x   5x 4x   5x        
/**
 * Truncates a string to a word break.
 * @param {string} str The string to be truncated.
 * @param {number} len The length that the string will be truncated to.
 * @param {string} append This is optional.
 * @returns {string} The truncated string.
 */
function truncateString(str, len, append = "…") {
  let newLength;
 
  // Handle zero or negative length case
  if (len <= 0) {
    return "";
  }
 
  // Handle case where append length is greater than or equal to the max length
  if (append.length >= len) {
    return str;
  }
 
  // If the original string length is less than or equal to the specified length
  if (str.length <= len) {
    return str;
  }
 
  // if the length of original string and the appended string is greater than the max length, we need to truncate, otherwise, use the original string
  if (str.length + append.length > len) {
    newLength = len - append.length;
  } else E{
    newLength = str.length;
  }
 
  // If there's no space or if the string has no spaces, truncate directly
  if (str.indexOf(" ") === -1) {
    return str.substring(0, newLength) + append;
  }
 
  let tempString = str.substring(0, newLength); //cut the string at the new length
  tempString = tempString.replace(/\s+\S*$/, ""); //find the last space that appears before the substringed text
 
  if (append.length > 0) {
    tempString += append;
  }
  return tempString;
}
 
export { truncateString };