You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
801 B
28 lines
801 B
2 years ago
|
var defaults = require('./defaults');
|
||
|
var isUndef = require('./isUndef');
|
||
|
exports = function(txt, width) {
|
||
|
var options =
|
||
|
arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
||
|
defaults(options, defOptions);
|
||
|
var ellipsis = options.ellipsis,
|
||
|
separator = options.separator;
|
||
|
var len = txt.length;
|
||
|
if (width > len) return txt;
|
||
|
var end = width - ellipsis.length;
|
||
|
if (end < 1) return ellipsis;
|
||
|
var ret = txt.slice(0, end);
|
||
|
if (isUndef(separator)) return ret + ellipsis;
|
||
|
if (txt.indexOf(separator, end) !== end) {
|
||
|
var idx = ret.lastIndexOf(separator);
|
||
|
if (idx > -1) {
|
||
|
ret = ret.slice(0, idx);
|
||
|
}
|
||
|
}
|
||
|
return ret + ellipsis;
|
||
|
};
|
||
|
var defOptions = {
|
||
|
ellipsis: '...'
|
||
|
};
|
||
|
|
||
|
module.exports = exports;
|