1var createPadding = require('./_createPadding'), 2 stringSize = require('./_stringSize'), 3 toInteger = require('./toInteger'), 4 toString = require('./toString'); 5 6/* Built-in method references for those with the same name as other `lodash` methods. */ 7var nativeCeil = Math.ceil, 8 nativeFloor = Math.floor; 9 10/** 11 * Pads `string` on the left and right sides if it's shorter than `length`. 12 * Padding characters are truncated if they can't be evenly divided by `length`. 13 * 14 * @static 15 * @memberOf _ 16 * @since 3.0.0 17 * @category String 18 * @param {string} [string=''] The string to pad. 19 * @param {number} [length=0] The padding length. 20 * @param {string} [chars=' '] The string used as padding. 21 * @returns {string} Returns the padded string. 22 * @example 23 * 24 * _.pad('abc', 8); 25 * // => ' abc ' 26 * 27 * _.pad('abc', 8, '_-'); 28 * // => '_-abc_-_' 29 * 30 * _.pad('abc', 3); 31 * // => 'abc' 32 */ 33function pad(string, length, chars) { 34 string = toString(string); 35 length = toInteger(length); 36 37 var strLength = length ? stringSize(string) : 0; 38 if (!length || strLength >= length) { 39 return string; 40 } 41 var mid = (length - strLength) / 2; 42 return ( 43 createPadding(nativeFloor(mid), chars) + 44 string + 45 createPadding(nativeCeil(mid), chars) 46 ); 47} 48 49module.exports = pad; 50