pad.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. var baseToString = require('../internal/baseToString'),
  2. createPadding = require('../internal/createPadding');
  3. /* Native method references for those with the same name as other `lodash` methods. */
  4. var nativeCeil = Math.ceil,
  5. nativeFloor = Math.floor,
  6. nativeIsFinite = global.isFinite;
  7. /**
  8. * Pads `string` on the left and right sides if it's shorter than `length`.
  9. * Padding characters are truncated if they can't be evenly divided by `length`.
  10. *
  11. * @static
  12. * @memberOf _
  13. * @category String
  14. * @param {string} [string=''] The string to pad.
  15. * @param {number} [length=0] The padding length.
  16. * @param {string} [chars=' '] The string used as padding.
  17. * @returns {string} Returns the padded string.
  18. * @example
  19. *
  20. * _.pad('abc', 8);
  21. * // => ' abc '
  22. *
  23. * _.pad('abc', 8, '_-');
  24. * // => '_-abc_-_'
  25. *
  26. * _.pad('abc', 3);
  27. * // => 'abc'
  28. */
  29. function pad(string, length, chars) {
  30. string = baseToString(string);
  31. length = +length;
  32. var strLength = string.length;
  33. if (strLength >= length || !nativeIsFinite(length)) {
  34. return string;
  35. }
  36. var mid = (length - strLength) / 2,
  37. leftLength = nativeFloor(mid),
  38. rightLength = nativeCeil(mid);
  39. chars = createPadding('', rightLength, chars);
  40. return chars.slice(0, leftLength) + string + chars;
  41. }
  42. module.exports = pad;