= 40 and age < 60', action: '"Is middle-aged."' },
{ name: 'Old', cond: 'age >= 60', action: '"Is old."' }
];
[Bindable] private var attrs:Array = [ // { attr, value }'s.
{ attr: 'age', value: 40, type: 'number' }
];
private function setCurrentRule():void {
var rule:Object = rulesList.selectedItem;
ruleName.text = rule.name;
ruleCond.text = rule.cond;
ruleAction.text = rule.action;
}
private function updateRule(asNew:Boolean=false):void {
var rule:Object = {
name: ruleName.text,
cond: ruleCond.text,
action: ruleAction.text
}
var a:Array = rules == null ? [] : rules;
if (asNew)
a.push(rule)
else
a[rulesList.selectedIndex] = rule;
rules = null;
rules = a;
}
private function addAttr():void {
var a:Array = (attrs == null) ? [] : attrs;
a.push({ attr: "(EDIT THIS)", type: "number", value: "(EDIT THIS)" });
attrs = null;
attrs = a;
}
private function evaluate():void {
// Collect all attributes and set it to x:
var x:Object = {};
var o:Object;
D.display("Attributes:");
for each(o in attrs) {
if (o.attr != '' && o.attr != '(EDIT THIS)') {
D.display(" " + o.attr + " = " + o.value);
switch(o.type) {
case 'number': x[o.attr] = Number(o.value); break;
case 'boolean': x[o.attr] = Boolean(o.value); break;
case 'string': x[o.attr] = String(o.value); break;
default: x[o.attr] = o.value; break;
}
}
}
for each(o in rules) {
if (D.evalToBoolean(o.cond, x)) {
D.display('\n[Match: "' + o.name + '"]');
var result:Object = D.eval(o.action, x);
if (result != null)
D.display(" Returned: " + result);
}
}
D.display("\n---------------------------------\n");
}
]]>
number
boolean
string