UNPKG

eliza-core

Version:

A rendition of ELIZA program engine by Weizenbaum sharable for all javascript environments

35 lines (34 loc) 1 kB
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]; } }