/** | |
* random table string and table length. | |
*/ | |
var TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', | |
TABLE_LEN = TABLE.length; | |
/** | |
* generate random string from template. | |
* | |
* replace for placeholder "X" in template. | |
* return template if not has placeholder. | |
* | |
* @param {String} template template string. | |
* @throws {TypeError} if template is not a String. | |
* @return {String} replaced string. | |
*/ | |
function generate(template) { | |
var match, i, len, result; | |
if (typeof template !== 'string') { | |
throw new TypeError('template must be a String: ' + template); | |
} | |
match = template.match(/(X+)[^X]*$/); | |
// return template if not has placeholder | |
if (match === null) { | |
return template; | |
} | |
// generate random string | |
for (result = '', i = 0, len = match[1].length; i < len; ++i) { | |
result += TABLE[Math.floor(Math.random() * TABLE_LEN)]; | |
} | |
// concat template and random string | |
return template.slice(0, match.index) + result + | |
template.slice(match.index + result.length); | |
} | |
/** | |
* export. | |
*/ | |
module.exports = { | |
generate: generate | |
}; | |