/**
* 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
};