Warning: session_start(): open(/var/lib/php/sessions/sess_4s34uv8a0d91jjq6g5vl795dik, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass NewWoody {
Map rulesByName;
new L badRules;
S lastOutput;
BBRule activeRule;
*() {
rulesByName = indexFieldAsCIMap('listName, bb_allRules());
}
*(NewWoody w) {
copyFields(w, this, 'rulesByName, 'badRules);
}
void processInput(S input) {
temp tempSetTL(ctxContext_var(), nu(CtxContext, +input));
new L matching;
for (BBRule r : valuesList(rulesByName))
if (ruleExpressionMatches(r))
matching.add(r);
lastOutput = null;
activeRule = first(matching);
if (activeRule != null)
if (cic(activeRule.answerMode, 'random))
lastOutput = random(activeRule.answers);
else
lastOutput = first(activeRule.answers);
}
bool ruleExpressionMatches(BBRule r) {
if (empty(r.expression)) false;
try {
ret ctxEvalCondition(r.expression);
} catch print e {
badRules.add(r);
rulesByName.remove(r.listName);
false;
}
}
L listsMatchingInput(S input) {
temp tempSetTL(ctxContext_var(), nu(CtxContext, +input));
ret [BBRule r : valuesList(rulesByName) | ruleExpressionMatches(r)];
}
}