From 89d53306f3d964c47903d6e1962541721f457924 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Wed, 26 Aug 2015 08:30:06 -0700 Subject: [PATCH] Use `toInteger` in pad methods and make nullish `chars` checks in pad and trim methods `undefined` checks. --- lodash.js | 18 +++++++++--------- test/test.js | 5 ++--- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/lodash.js b/lodash.js index e7cfd0041..122f57b73 100644 --- a/lodash.js +++ b/lodash.js @@ -3341,13 +3341,13 @@ */ function createPadding(string, length, chars) { var strLength = string.length; - length = +length; + length = toInteger(length); - if (strLength >= length || !nativeIsFinite(length)) { + if (!length || strLength >= length) { return ''; } var padLength = length - strLength; - chars = chars == null ? ' ' : (chars + ''); + chars = chars === undefined ? ' ' : (chars + ''); return repeat(chars, nativeCeil(padLength / chars.length)).slice(0, padLength); } @@ -10018,10 +10018,10 @@ */ function pad(string, length, chars) { string = baseToString(string); - length = +length; + length = toInteger(length); var strLength = string.length; - if (strLength >= length || !nativeIsFinite(length)) { + if (!length || strLength >= length) { return string; } var mid = (length - strLength) / 2, @@ -10466,7 +10466,7 @@ if (!string) { return string; } - if (guard || chars == null) { + if (guard || chars === undefined) { return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1); } chars = (chars + ''); @@ -10497,7 +10497,7 @@ if (!string) { return string; } - if (guard || chars == null) { + if (guard || chars === undefined) { return string.slice(trimmedLeftIndex(string)); } return string.slice(charsLeftIndex(string, (chars + ''))); @@ -10527,7 +10527,7 @@ if (!string) { return string; } - if (guard || chars == null) { + if (guard || chars === undefined) { return string.slice(0, trimmedRightIndex(string) + 1); } return string.slice(0, charsRightIndex(string, (chars + '')) + 1); @@ -10587,7 +10587,7 @@ return omission; } var result = string.slice(0, end); - if (separator == null) { + if (separator === undefined) { return result + omission; } if (isRegExp(separator)) { diff --git a/test/test.js b/test/test.js index cb04a78df..983de2669 100644 --- a/test/test.js +++ b/test/test.js @@ -11381,7 +11381,7 @@ }); test('`_.' + methodName + '` should treat nullish values as empty strings', 6, function() { - _.each([null, '_-'], function(chars) { + _.each([undefined, '_-'], function(chars) { var expected = chars ? (isPad ? '__' : chars) : ' '; strictEqual(func(null, 2, chars), expected); strictEqual(func(undefined, 2, chars), expected); @@ -15839,11 +15839,10 @@ }); }); - test('`_.' + methodName + '` should work with nullish or empty string values for `chars`', 3, function() { + test('`_.' + methodName + '` should work with `undefined` or empty string values for `chars`', 2, function() { var string = whitespace + 'a b c' + whitespace, expected = (index == 2 ? whitespace : '') + 'a b c' + (index == 1 ? whitespace : ''); - strictEqual(func(string, null), expected); strictEqual(func(string, undefined), expected); strictEqual(func(string, ''), string); });