You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
766 B
38 lines
766 B
function format(fmt) {
|
|
var re = /(%?)(%([jds]))/g
|
|
, args = Array.prototype.slice.call(arguments, 1);
|
|
if(args.length) {
|
|
fmt = fmt.replace(re, function(match, escaped, ptn, flag) {
|
|
var arg = args.shift();
|
|
switch(flag) {
|
|
case 's':
|
|
arg = '' + arg;
|
|
break;
|
|
case 'd':
|
|
arg = Number(arg);
|
|
break;
|
|
case 'j':
|
|
arg = JSON.stringify(arg);
|
|
break;
|
|
}
|
|
if(!escaped) {
|
|
return arg;
|
|
}
|
|
args.unshift(arg);
|
|
return match;
|
|
})
|
|
}
|
|
|
|
// arguments remain after formatting
|
|
if(args.length) {
|
|
fmt += ' ' + args.join(' ');
|
|
}
|
|
|
|
// update escaped %% values
|
|
fmt = fmt.replace(/%{2,2}/g, '%');
|
|
|
|
return '' + fmt;
|
|
}
|
|
|
|
module.exports = format;
|