@newdash/newdash
Version:
javascript/typescript utility library
48 lines (47 loc) • 1.54 kB
JavaScript
;
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;