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 | */
|
9 | module.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 | }
|