UNPKG

1.01 kBJavaScriptView Raw
1/**
2 * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.
3 * Partially taken from https://stackoverflow.com/a/5723274/3192470.
4 *
5 * @param {string} string - string to be truncated
6 * @param {number} maxLength - maximum size of the resulting string
7 * @returns {string}
8 */
9module.exports = function truncateString (string, maxLength) {
10 const separator = '...'
11
12 // Return original string if it's already shorter than maxLength
13 if (string.length <= maxLength) {
14 return string
15 // Return truncated substring without '...' if string can't be meaningfully truncated
16 } if (maxLength <= separator.length) {
17 return string.substr(0, maxLength)
18 // Return truncated string divided in half by '...'
19 }
20 const charsToShow = maxLength - separator.length
21 const frontChars = Math.ceil(charsToShow / 2)
22 const backChars = Math.floor(charsToShow / 2)
23
24 return string.substr(0, frontChars) + separator + string.substr(string.length - backChars)
25}