UNPKG

voca

Version:

The ultimate JavaScript string library

46 lines (40 loc) 1.5 kB
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;