From c1ecd8aefc947eeb007e04f1e137df52bc753710 Mon Sep 17 00:00:00 2001 From: Tim Yung Date: Mon, 13 Aug 2018 11:47:23 -0700 Subject: [PATCH] RN: Polyfill `String#padEnd` and `String#padStart` Summary: Adds polyfills for `String.prototype.padEnd` and `String.prototype.padStart`. Reviewed By: mjesun Differential Revision: D9233437 fbshipit-source-id: 3430450f28b4cec8f1c74af5f169e9bdef044ae8 --- Libraries/polyfills/String.prototype.es6.js | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/Libraries/polyfills/String.prototype.es6.js b/Libraries/polyfills/String.prototype.es6.js index ac46fc873d2..65551380322 100644 --- a/Libraries/polyfills/String.prototype.es6.js +++ b/Libraries/polyfills/String.prototype.es6.js @@ -124,3 +124,37 @@ if (!String.prototype.codePointAt) { return first; }; } + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padEnd +if (!String.prototype.padEnd) { + String.prototype.padEnd = function padEnd(targetLength, padString) { + targetLength = targetLength >> 0; //floor if number or convert non-number to 0; + padString = String(typeof padString !== 'undefined' ? padString : ' '); + if (this.length > targetLength) { + return String(this); + } else { + targetLength = targetLength - this.length; + if (targetLength > padString.length) { + padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed + } + return String(this) + padString.slice(0, targetLength); + } + }; +} + +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart +if (!String.prototype.padStart) { + String.prototype.padStart = function padStart(targetLength, padString) { + targetLength = targetLength >> 0; //truncate if number or convert non-number to 0; + padString = String(typeof padString !== 'undefined' ? padString : ' '); + if (this.length > targetLength) { + return String(this); + } else { + targetLength = targetLength - this.length; + if (targetLength > padString.length) { + padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed + } + return padString.slice(0, targetLength) + String(this); + } + }; +}