UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

48 lines (47 loc) 1.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pad = void 0; const createPadding_1 = __importDefault(require("./.internal/createPadding")); const stringSize_1 = __importDefault(require("./.internal/stringSize")); const toInteger_1 = __importDefault(require("./toInteger")); const toString_1 = __importDefault(require("./toString")); /** * 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`. * * @since 5.12.0 * @category String * @param string The string to pad. * @param length The padding length. * @param chars The string used as padding. * @returns Returns the padded string. * @example * * ```js * pad('abc', 8) * // => ' abc ' * * pad('abc', 8, '_-') * // => '_-abc_-_' * * pad('abc', 2) * // => 'abc' * ``` */ function pad(string = "", length = 0, chars = " ") { string = (0, toString_1.default)(string); length = (0, toInteger_1.default)(length); const strLength = length ? (0, stringSize_1.default)(string) : 0; if (!length || strLength >= length) { return string; } const mid = (length - strLength) / 2; return ((0, createPadding_1.default)(Math.floor(mid), chars) + string + (0, createPadding_1.default)(Math.ceil(mid), chars)); } exports.pad = pad; exports.default = pad;