time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

pad.js (1289B)


      1 var 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. */
      7 var 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  */
     33 function 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 
     49 module.exports = pad;