Projekt

Obecné

Profil

Stáhnout (1.18 KB) Statistiky
| Větev: | Revize:
1 3a515b92 cagy
/*!
2
 * repeat-string <https://github.com/jonschlinkert/repeat-string>
3
 *
4
 * Copyright (c) 2014-2015, Jon Schlinkert.
5
 * Licensed under the MIT License.
6
 */
7
8
'use strict';
9
10
/**
11
 * Results cache
12
 */
13
14
var res = '';
15
var cache;
16
17
/**
18
 * Expose `repeat`
19
 */
20
21
module.exports = repeat;
22
23
/**
24
 * Repeat the given `string` the specified `number`
25
 * of times.
26
 *
27
 * **Example:**
28
 *
29
 * ```js
30
 * var repeat = require('repeat-string');
31
 * repeat('A', 5);
32
 * //=> AAAAA
33
 * ```
34
 *
35
 * @param {String} `string` The string to repeat
36
 * @param {Number} `number` The number of times to repeat the string
37
 * @return {String} Repeated string
38
 * @api public
39
 */
40
41
function repeat(str, num) {
42
  if (typeof str !== 'string') {
43
    throw new TypeError('expected a string');
44
  }
45
46
  // cover common, quick use cases
47
  if (num === 1) return str;
48
  if (num === 2) return str + str;
49
50
  var max = str.length * num;
51
  if (cache !== str || typeof cache === 'undefined') {
52
    cache = str;
53
    res = '';
54
  } else if (res.length >= max) {
55
    return res.substr(0, max);
56
  }
57
58
  while (max > res.length && num > 1) {
59
    if (num & 1) {
60
      res += str;
61
    }
62
63
    num >>= 1;
64
    str += str;
65
  }
66
67
  res += str;
68
  res = res.substr(0, max);
69
  return res;
70
}