...
Code Block |
---|
rule store_name { select when echo name pre{ name = event:attr(attrs{"name")}.klog("our passed in name: ") } send_directive("store_name", {"name":name}) fired{ ent:name := name } } |
...
Code Block |
---|
rule hello_world { select when echo hello pre { name = event:attr(attrs{"name")}.klog("our passed in name: ") .defaultsTo(ent:name,"use stored name") } send_directive("say", {"something": "Hello " + name}) } |
...
Code Block |
---|
rule hello_world { select when echo hello pre { name = event:attr(attrs{"name")}.klog("our passed in name: ") || ent:name.klog("use stored name") } send_directive("say", {"something": "Hello " + name}) } |
As an aside, this use of the Boolean or operator (`||`) is a shorter form, for this particular case, of using the Boolean ternary operator, shown in context here:
Code Block |
---|
name = event:attr(attrs{"name")}.klog("our passed in name: ") => event:attr(attrs{"name")} | ent:name.klog("use stored name") |
...
Replace the entire prelude with the code shown below:
Code Block |
---|
id = event:attr(attrs{"id")} || "_0" first = ent:name{[id,"name","first"]} last = ent:name{[id,"name","last"]} name = first + " " + last |
...
Code Block |
---|
rule store_name { select when echo name pre{ passed_id = event:attr(attrs{"id")}.klog("our passed in id: ") passed_first_name = event:attr(attrs{"first_name")}.klog("our passed in first_name: ") passed_last_name = event:attr(attrs{"last_name")}.klog("our passed in last_name: ") } send_directive("store_name", { "id" : passed_id, "first_name" : passed_first_name, "last_name" : passed_last_name }) always{ ent:name := ent:name.defaultsTo(clear_name, "initialization was needed"); ent:name := ent:name.put([passed_id,"name","first"], passed_first_name) .put([passed_id,"name","last"], passed_last_name) } } |
...
Code Block |
---|
pre{ id = event:attr(attrs{"id")} || "_0" name = name(id) } |
...
Code Block |
---|
rule hello_world { select when echo hello pre{ id = event:attr(attrs{"id")} || "_0" name = name(id) visits = ent:name{[id,"visits"]}.defaultsTo(0) } send_directive("say", {"something":"Hello " + name}) fired { ent:name{[id,"visits"]} := visits + 1 } } |
...