truncate.js 801 B

123456789101112131415161718192021222324252627
  1. var defaults = require('./defaults');
  2. var isUndef = require('./isUndef');
  3. exports = function(txt, width) {
  4. var options =
  5. arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  6. defaults(options, defOptions);
  7. var ellipsis = options.ellipsis,
  8. separator = options.separator;
  9. var len = txt.length;
  10. if (width > len) return txt;
  11. var end = width - ellipsis.length;
  12. if (end < 1) return ellipsis;
  13. var ret = txt.slice(0, end);
  14. if (isUndef(separator)) return ret + ellipsis;
  15. if (txt.indexOf(separator, end) !== end) {
  16. var idx = ret.lastIndexOf(separator);
  17. if (idx > -1) {
  18. ret = ret.slice(0, idx);
  19. }
  20. }
  21. return ret + ellipsis;
  22. };
  23. var defOptions = {
  24. ellipsis: '...'
  25. };
  26. module.exports = exports;