/ Published in: JavaScript
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
String.prototype.supplant = function (o) { return this.replace(/{([^{}]*)}/g, function (a, b) { //Evaluators var ev = { _Object: /([^\[\]]*)\[([^\[\]]*)\]/g, _Equation: /([^\=\!\?]*)([\=\!\?]*)([^\?\:]*)([\?\:]*)([^\?\:]*)([\?\:]*)([^\?\:]*)/g }; //Test if it's an equation - A==B?this:that var _1 = b.indexOf('?'); if (_1 !== -1) { var ci = null; b.replace(ev._Equation, function (x, y, z, xx, yy, zz, xxx, yyy, zzz) { //Seems to fire twice, yet to work that out if (x == "") return; //A==B?this:that would create //equation = { // l: "A", left // r: "B", right // s: "this", success // f: "that" fail //} var equation = { l: y.replace(ev._Object, function (x, y, z) { return o[y][z] }) || y, r: (z != '?') ? xx : null, s: (z != '?') ? zz : xx, f: (z != '?') ? yyy : zz }, evald = null; if (z != '?') { evald = eval(equation.l + z + equation.r); } else { evald = o[equation.l]; } if (evald == true) ci = equation.s; if (evald == false) ci = equation.f; }); return ci; } else { var r = o[b]; return typeof r === 'string' ? r : a; } } ); };