rule state
by jpeter06
HTML
<textarea id="resultados" cols="30" rows="8">
</textarea>
JavaScript
class RuleEval {
ruleSet = new Map();
addRule(rule, result) {
this.ruleSet.set(rule, result);
}
evalRules(domain) {
for ( const [rule, result ] of this.ruleSet ) {
if ( rule(domain) ) return { rule: rule, result: result };
}
}
}
let ruleEval = new RuleEval();
ruleEval.addRule((facts) => facts.temp > 100 ,
'dont play golf!'
);
ruleEval.addRule( (facts) => facts.outlook === 'sunny' && facts.temp > 95,
'dont play golf!'
);
ruleEval.addRule( (facts) => facts.outlook === 'overcast' &&
facts.temp > 50 && facts.temp < 70 && ! facts.windy ,
'play golf!' );
let answer = ruleEval.evalRules(
{ outlook: 'overcast', temp: 155, windy: false});
if ( answer ) {
var salida = document.getElementById('resultados');
salida.value = `Rule: ${answer.rule} result: ${answer.result}`;
}