JSFiddle - React, Tailwind, and code Playground
HTML
<textarea rows="30" cols="80">var flowers = new Misdirection(&flowers);
flowers.abracadabra();
alert(flowers);
function Misdirection(flowers) {
this.abracadabra = function () {
*flowers = new Rabbit;
};
}
function Rabbit() {
this.toString = function () {
return "Eh... What's up, doc?";
};
}</textarea><button>Run</button>
JavaScript
var textarea = document.getElementsByTagName("textarea")[0];
var button = document.getElementsByTagName("button")[0];
button.addEventListener("click", function () {
var script = textarea.value.replace(/&([$A-Z_][$0-9A-Z_]*)/gi, (function () {
var pointer = new String("function(value){if(value===void 0)return upvalue;else upvalue=value;}");
return function (value, identifier) {return pointer.replace(/upvalue/g, identifier);};
}()));
script = script.replace(/\*([$A-Z_][$0-9A-Z_]*)\s*(=|\+=|-=|\*=|\/=|%=|&=|\|=|\^=|<<=|>>=|>>>=)\s*(.*);/gi, function (value, identifier, operator, expression) {
if (operator === "=") return identifier + "(" + expression + ");";
else return identifier + "(" + identifier + "()" + operator.slice(0, -1) + "(" + expression + "));";
});
script = script.replace(/\*([$A-Z_][$0-9A-Z_]*)/gi, function (value, identifier) {return identifier + "()";});
try {Function.call(null, script)();}
catch (error) {alert(error);}
}, false);