sugar
Version:
A Javascript utility library for working with native objects.
32 lines (28 loc) • 1.04 kB
JavaScript
;
var isUndefined = require('../../common/internal/isUndefined'),
mathAliases = require('../../common/var/mathAliases'),
truncateOnWord = require('./truncateOnWord');
var ceil = mathAliases.ceil,
floor = mathAliases.floor;
function truncateString(str, length, from, ellipsis, split) {
var str1, str2, len1, len2;
if (str.length <= length) {
return str.toString();
}
ellipsis = isUndefined(ellipsis) ? '...' : ellipsis;
switch(from) {
case 'left':
str2 = split ? truncateOnWord(str, length, true) : str.slice(str.length - length);
return ellipsis + str2;
case 'middle':
len1 = ceil(length / 2);
len2 = floor(length / 2);
str1 = split ? truncateOnWord(str, len1) : str.slice(0, len1);
str2 = split ? truncateOnWord(str, len2, true) : str.slice(str.length - len2);
return str1 + ellipsis + str2;
default:
str1 = split ? truncateOnWord(str, length) : str.slice(0, length);
return str1 + ellipsis;
}
}
module.exports = truncateString;