eliza-core
Version:
A rendition of ELIZA program engine by Weizenbaum sharable for all javascript environments
35 lines (34 loc) • 1 kB
JavaScript
import { NoReassemblyRuleException } from './exceptions';
export class Decomp {
constructor(pattern, mem, reassembles) {
this.pattern = pattern;
this.mem = mem;
this.reassembles = reassembles;
this.currReasmb = 100;
}
getPattern() {
return this.pattern;
}
isMemoryKey() {
return this.mem;
}
getReasemb() {
return this.reassembles.filter(r => !r.isAnnotated());
}
getAnnotates() {
return this.reassembles.filter(r => r.isAnnotated());
}
nextRule() {
const reassembles = this.reassembles.filter(r => !r.isAnnotated());
if (this.isMemoryKey()) {
this.currReasmb = Math.floor(Math.random() * reassembles.length);
}
if (++this.currReasmb >= reassembles.length) {
this.currReasmb = 0;
}
if (reassembles.length < 1) {
throw new NoReassemblyRuleException();
}
return reassembles[this.currReasmb];
}
}