Projekt

Obecné

Profil

Stáhnout (1.18 KB) Statistiky
| Větev: | Revize:
1
/*!
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
}
(3-3/4)