JSFiddle - React, Tailwind, and code Playground

by tujger

JavaScript

function sprintf() {
        var a = this, b;
        if(arguments[0].constructor === Array || arguments[0].constructor === Object) {
        	arguments = arguments[0];
        }
        var args = [];
        for(var i = 0; i < arguments.length; i++) {
         	args.push(arguments[i]);
        }
				res = this.replace(/%[\d\.]*[sdf]/g, function(pattern){
        	var value = args.shift();
          var tokens = pattern.match(/^%(0)?([\d\.]*)(.)$/);
					console.log("T", tokens, value);
          switch(tokens[3]) {
          case "d":
          	if(tokens[1] == "0") {
	          	var length = +tokens[2];
  	          var string = value.toString();
            	value = "0".repeat(length - string.length) + string;
            }
						break;
          case "f":
          	break;
          case "s":
          	break;
          default:
          	console.error("Unknown pattern: " + tokens[0]);
          }
          
					return value;
        });
        return res;
        console.log("F", res);

        for(b in args){
            var value = args[b];
            var replace = "";
            if (value.constructor === String || value.constructor === Number) {
                replace = value;
            } else if(value.constructor === HTMLSpanElement) {
                if(value.dataset.lang && lang.$origin[value.dataset.lang]) {
                    replace = lang[value.dataset.lang].outerText;
                } else {
                    replace = value.outerText;
                }
            } else if (value.constructor === Array) {
                replace = value;
            } else if (value.constructor === Object) {
                replace = value;
            } else {
                console.error("Replace failed.")
            }
            a = a.replace(/%[a-z]/,replace);
        }
        return a; // Make chainable
    }
    
    console.log(res)