silegismg-interpretador-articulacao
Version:
Interpretador de Articulação
26 lines (25 loc) • 794 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ParserLinha {
constructor(regexp, ...requisitos) {
this.regexp = regexp;
this.requisitos = requisitos;
}
processar(contexto, linha) {
if (this.atendeRequisitos(contexto)) {
const m = this.regexp.exec(linha);
if (m) {
const resultado = this.onMatch(contexto, m);
if (resultado) {
contexto.ultimoItem = resultado;
return true;
}
}
}
return false;
}
atendeRequisitos(contexto) {
return this.requisitos.length === 0 || !!this.requisitos.find((r) => contexto.ultimoItem instanceof r);
}
}
exports.default = ParserLinha;