Montar as possibilidades através de if/else
class PossibilidadesIf {
constructor() {
this.arrSe = [];
this.syntaxesComParametro = ['se', 'senao', 'log', 'getMensagem'];
this.syntaxesSemParametro = ['fimse'];
}
se(str) {
this.arrSe.push(str);
}
senao(str) {
this.arrSe.pop();
this.arrSe.push(str);
}
fimse() {
this.arrSe.pop();
}
log(str) {
console.log(this.getMensagem(str));
}
getMensagem(str) {
return (this.arrSe.join(' && ') + (str != undefined ? '\n\t\t' + str : ''));
}
evaluate(fn) {
let str = adicionaThisNasFuncoes(fn.toString(), this);
eval('let fn = ' + str + '; fn()');
function adicionaThisNasFuncoes(str, o) {
for (let palavraSubstituir of o.syntaxesComParametro) {
str = str.replace(new RegExp(palavraSubstituir + "\\(\\'", "g"), 'this.' + palavraSubstituir + '(\'');
};
for (let palavraSubstituir of o.syntaxesSemParametro) {
str = str.replace(new RegExp(palavraSubstituir + "\\(\\)", "g"), 'this.' + palavraSubstituir + '()');
}
return str;
}
}
}
var possibilidadesIf = new PossibilidadesIf();