'use strict';

var bind = require('function-bind');
var define = require('define-properties');
var replace = bind.call(Function.call, String.prototype.replace);

var rightWhitespace = /[\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]*$/;

var trimRight = function trimRight() {
	return replace(this, rightWhitespace, '');
};

var boundTrimRight = bind.call(Function.call, trimRight);
define(boundTrimRight, {
	shim: function shimTrimRight() {
		if (!String.prototype.trimRight) {
			define(String.prototype, { trimRight: trimRight });
		}
		return String.prototype.trimRight;
	}
});

module.exports = boundTrimRight;

'use strict';

var bind = require('function-bind');
var define = require('define-properties');
var replace = bind.call(Function.call, String.prototype.replace);

var rightWhitespace = /[\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]*$/;

var trimRight = function trimRight() {
	return replace(this, rightWhitespace, '');
};

var boundTrimRight = bind.call(Function.call, trimRight);
define(boundTrimRight, {
	shim: function shimTrimRight() {
		var zeroWidthSpace = '\u200b';
		define(String.prototype, { trimRight: trimRight }, {
			trimRight: function () {
				return zeroWidthSpace.trimRight() !== zeroWidthSpace;
			}
		});
		return String.prototype.trimRight;
	}
});

module.exports = boundTrimRight;

Fix a bug in node 0.10 (and presumably other browsers) where the zero-width space is erroneously trimmed.
Fix a bug in node 0.10 (and presumably other browsers) where the zero-width space is erroneously trimmed.
