UNPKG

528 BJavaScriptView Raw
1"use strict";
2
3const formatRegExp = /%[sdj%]/g;
4
5module.exports = function(f) {
6 var i = 1;
7 var args = arguments;
8 var len = args.length;
9
10 var str = String(f).replace(formatRegExp, function(x) {
11 if(x === '%%') return '%';
12 if(i >= len) return x;
13 switch(x) {
14 case '%s': return String(args[i++]);
15 case '%d': return Number(args[i++]);
16 case '%j':
17 try {
18 return JSON.stringify(args[i++]);
19 } catch(_) {
20 return '[Circular]';
21 }
22 }
23 });
24
25 return str;
26};