Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: not use deprecated event:attr() function

...

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
    }
  }

...