You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					50 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.3 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								var createPadding = require('./_createPadding'),
							 | 
						||
| 
								 | 
							
								    stringSize = require('./_stringSize'),
							 | 
						||
| 
								 | 
							
								    toInteger = require('./toInteger'),
							 | 
						||
| 
								 | 
							
								    toString = require('./toString');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Built-in method references for those with the same name as other `lodash` methods. */
							 | 
						||
| 
								 | 
							
								var nativeCeil = Math.ceil,
							 | 
						||
| 
								 | 
							
								    nativeFloor = Math.floor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Pads `string` on the left and right sides if it's shorter than `length`.
							 | 
						||
| 
								 | 
							
								 * Padding characters are truncated if they can't be evenly divided by `length`.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @static
							 | 
						||
| 
								 | 
							
								 * @memberOf _
							 | 
						||
| 
								 | 
							
								 * @since 3.0.0
							 | 
						||
| 
								 | 
							
								 * @category String
							 | 
						||
| 
								 | 
							
								 * @param {string} [string=''] The string to pad.
							 | 
						||
| 
								 | 
							
								 * @param {number} [length=0] The padding length.
							 | 
						||
| 
								 | 
							
								 * @param {string} [chars=' '] The string used as padding.
							 | 
						||
| 
								 | 
							
								 * @returns {string} Returns the padded string.
							 | 
						||
| 
								 | 
							
								 * @example
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * _.pad('abc', 8);
							 | 
						||
| 
								 | 
							
								 * // => '  abc   '
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * _.pad('abc', 8, '_-');
							 | 
						||
| 
								 | 
							
								 * // => '_-abc_-_'
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * _.pad('abc', 3);
							 | 
						||
| 
								 | 
							
								 * // => 'abc'
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function pad(string, length, chars) {
							 | 
						||
| 
								 | 
							
								  string = toString(string);
							 | 
						||
| 
								 | 
							
								  length = toInteger(length);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  var strLength = length ? stringSize(string) : 0;
							 | 
						||
| 
								 | 
							
								  if (!length || strLength >= length) {
							 | 
						||
| 
								 | 
							
								    return string;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  var mid = (length - strLength) / 2;
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    createPadding(nativeFloor(mid), chars) +
							 | 
						||
| 
								 | 
							
								    string +
							 | 
						||
| 
								 | 
							
								    createPadding(nativeCeil(mid), chars)
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = pad;
							 |