viniceosm
2/16/2018 - 1:43 PM

Montar as possibilidades através de if/else

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();