UNPKG

awesome-string

Version:

The ultimate JavaScript string library

38 lines (37 loc) 1.05 kB
import clipNumber from 'helper/number/clip_number'; import coerceToString from 'helper/string/coerce_to_string'; import isNil from 'helper/object/is_nil'; import { MAX_SAFE_INTEGER } from 'helper/number/const'; import toInteger from 'helper/number/to_integer'; /** * Repeats the `subject` number of `times`. * * @function repeat * @static * @since 1.0.0 * @memberOf Manipulate * @param {string} [subject=''] The string to repeat. * @param {number} [times=1] The number of times to repeat. * @return {string} Returns the repeated string. * @example * as.repeat('w', 3); * // => 'www' * * as.repeat('world', 0); * // => '' */ export default function repeat(subject, times) { let subjectString = coerceToString(subject); let timesInt = isNil(times) ? 1 : clipNumber(toInteger(times), 0, MAX_SAFE_INTEGER); let repeatString = ''; while (timesInt) { if (timesInt & 1) { repeatString += subjectString; } if (timesInt > 1) { subjectString += subjectString; } timesInt >>= 1; } return repeatString; }