voca
Version:
The ultimate JavaScript string library
46 lines (40 loc) • 1.5 kB
JavaScript
import { i as isNil } from './internal/is_nil.js';
import './is_string.js';
import { c as coerceToString } from './internal/coerce_to_string.js';
import { c as clipNumber, M as MAX_SAFE_INTEGER, t as toInteger } from './internal/to_integer.js';
import './repeat.js';
import { b as buildPadding } from './internal/build_padding.js';
/**
* Pads `subject` to a new `length`.
*
* @function pad
* @static
* @since 1.0.0
* @memberOf Manipulate
* @param {string} [subject=''] The string to pad.
* @param {int} [length=0] The length to pad the string. No changes are made if `length` is less than `subject.length`.
* @param {string} [pad=' '] The string to be used for padding.
* @return {string} Returns the padded string.
* @example
* v.pad('dog', 5);
* // => ' dog '
*
* v.pad('bird', 6, '-');
* // => '-bird-'
*
* v.pad('cat', 6, '-=');
* // => '-cat-='
*/
function pad(subject, length, pad) {
var subjectString = coerceToString(subject);
var lengthInt = isNil(length) ? 0 : clipNumber(toInteger(length), 0, MAX_SAFE_INTEGER);
var padString = coerceToString(pad, ' ');
if (lengthInt <= subjectString.length) {
return subjectString;
}
var paddingLength = lengthInt - subjectString.length;
var paddingSideLength = toInteger(paddingLength / 2);
var paddingSideRemainingLength = paddingLength % 2;
return buildPadding(padString, paddingSideLength) + subjectString + buildPadding(padString, paddingSideLength + paddingSideRemainingLength);
}
export default pad;