implementation.js 1.2 KB

123456789101112131415161718192021
  1. 'use strict';
  2. var RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible');
  3. var ToString = require('es-abstract/2024/ToString');
  4. var callBound = require('call-bind/callBound');
  5. var $replace = callBound('String.prototype.replace');
  6. var mvsIsWS = (/^\s$/).test('\u180E');
  7. /* eslint-disable no-control-regex */
  8. var leftWhitespace = mvsIsWS
  9. ? /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/
  10. : /^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/;
  11. var rightWhitespace = mvsIsWS
  12. ? /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/
  13. : /[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+$/;
  14. /* eslint-enable no-control-regex */
  15. module.exports = function trim() {
  16. var S = ToString(RequireObjectCoercible(this));
  17. return $replace($replace(S, leftWhitespace, ''), rightWhitespace, '');
  18. };