implementation.js 973 B

1234567891011121314151617181920212223242526272829303132
  1. 'use strict';
  2. var bind = require('function-bind');
  3. var ES = require('es-abstract/es7');
  4. var slice = bind.call(Function.call, String.prototype.slice);
  5. module.exports = function padEnd(maxLength) {
  6. var O = ES.RequireObjectCoercible(this);
  7. var S = ES.ToString(O);
  8. var stringLength = ES.ToLength(S.length);
  9. var fillString;
  10. if (arguments.length > 1) {
  11. fillString = arguments[1];
  12. }
  13. var filler = typeof fillString === 'undefined' ? '' : ES.ToString(fillString);
  14. if (filler === '') {
  15. filler = ' ';
  16. }
  17. var intMaxLength = ES.ToLength(maxLength);
  18. if (intMaxLength <= stringLength) {
  19. return S;
  20. }
  21. var fillLen = intMaxLength - stringLength;
  22. while (filler.length < fillLen) {
  23. var fLen = filler.length;
  24. var remainingCodeUnits = fillLen - fLen;
  25. filler += fLen > remainingCodeUnits ? slice(filler, 0, remainingCodeUnits) : filler;
  26. }
  27. var truncatedStringFiller = filler.length > fillLen ? slice(filler, 0, fillLen) : filler;
  28. return S + truncatedStringFiller;
  29. };