| /*! | 
|  * repeat-string <https://github.com/jonschlinkert/repeat-string> | 
|  * | 
|  * Copyright (c) 2014-2015, Jon Schlinkert. | 
|  * Licensed under the MIT License. | 
|  */ | 
|   | 
| 'use strict'; | 
|   | 
| /** | 
|  * Results cache | 
|  */ | 
|   | 
| var res = ''; | 
| var cache; | 
|   | 
| /** | 
|  * Expose `repeat` | 
|  */ | 
|   | 
| module.exports = repeat; | 
|   | 
| /** | 
|  * Repeat the given `string` the specified `number` | 
|  * of times. | 
|  * | 
|  * **Example:** | 
|  * | 
|  * ```js | 
|  * var repeat = require('repeat-string'); | 
|  * repeat('A', 5); | 
|  * //=> AAAAA | 
|  * ``` | 
|  * | 
|  * @param {String} `string` The string to repeat | 
|  * @param {Number} `number` The number of times to repeat the string | 
|  * @return {String} Repeated string | 
|  * @api public | 
|  */ | 
|   | 
| function repeat(str, num) { | 
|   if (typeof str !== 'string') { | 
|     throw new TypeError('expected a string'); | 
|   } | 
|   | 
|   // cover common, quick use cases | 
|   if (num === 1) return str; | 
|   if (num === 2) return str + str; | 
|   | 
|   var max = str.length * num; | 
|   if (cache !== str || typeof cache === 'undefined') { | 
|     cache = str; | 
|     res = ''; | 
|   } else if (res.length >= max) { | 
|     return res.substr(0, max); | 
|   } | 
|   | 
|   while (max > res.length && num > 1) { | 
|     if (num & 1) { | 
|       res += str; | 
|     } | 
|   | 
|     num >>= 1; | 
|     str += str; | 
|   } | 
|   | 
|   res += str; | 
|   res = res.substr(0, max); | 
|   return res; | 
| } |