@@ -21,6 +21,7 @@ module Agents |
||
| 21 | 21 |
* `this.memory()` |
| 22 | 22 |
* `this.memory(key)` |
| 23 | 23 |
* `this.memory(keyToSet, valueToSet)` |
| 24 |
+ * `this.setMemory(object)` (replaces the Agent's memory with the provided object) |
|
| 24 | 25 |
* `this.deleteKey(key)` (deletes a key from memory and returns the value) |
| 25 | 26 |
* `this.credential(name)` |
| 26 | 27 |
* `this.credential(name, valueToSet)` |
@@ -115,9 +116,12 @@ module Agents |
||
| 115 | 116 |
context["doLog"] = lambda { |a, x| log x }
|
| 116 | 117 |
context["doError"] = lambda { |a, x| error x }
|
| 117 | 118 |
context["getMemory"] = lambda { |a| memory.to_json }
|
| 118 |
- context["setMemory"] = lambda do |a, x, y| |
|
| 119 |
+ context["setMemoryKey"] = lambda do |a, x, y| |
|
| 119 | 120 |
memory[x] = clean_nans(y) |
| 120 | 121 |
end |
| 122 |
+ context["setMemory"] = lambda do |a, x| |
|
| 123 |
+ memory.replace(clean_nans(x)) |
|
| 124 |
+ end |
|
| 121 | 125 |
context["deleteKey"] = lambda { |a, x| memory.delete(x).to_json }
|
| 122 | 126 |
context["escapeHtml"] = lambda { |a, x| CGI.escapeHTML(x) }
|
| 123 | 127 |
context["unescapeHtml"] = lambda { |a, x| CGI.unescapeHTML(x) }
|
@@ -165,7 +169,7 @@ module Agents |
||
| 165 | 169 |
|
| 166 | 170 |
Agent.memory = function(key, value) {
|
| 167 | 171 |
if (typeof(key) !== "undefined" && typeof(value) !== "undefined") {
|
| 168 |
- setMemory(key, value); |
|
| 172 |
+ setMemoryKey(key, value); |
|
| 169 | 173 |
} else if (typeof(key) !== "undefined") {
|
| 170 | 174 |
return JSON.parse(getMemory())[key]; |
| 171 | 175 |
} else {
|
@@ -173,6 +177,10 @@ module Agents |
||
| 173 | 177 |
} |
| 174 | 178 |
} |
| 175 | 179 |
|
| 180 |
+ Agent.setMemory = function(obj) {
|
|
| 181 |
+ setMemory(obj); |
|
| 182 |
+ } |
|
| 183 |
+ |
|
| 176 | 184 |
Agent.credential = function(name, value) {
|
| 177 | 185 |
if (typeof(value) !== "undefined") {
|
| 178 | 186 |
setCredential(name, value); |
@@ -212,6 +212,22 @@ describe Agents::JavaScriptAgent do |
||
| 212 | 212 |
end |
| 213 | 213 |
end |
| 214 | 214 |
|
| 215 |
+ describe "setMemory" do |
|
| 216 |
+ it "stores an object" do |
|
| 217 |
+ @agent.options['code'] = 'Agent.check = function() {
|
|
| 218 |
+ var u = {};
|
|
| 219 |
+ u["one"] = 1; |
|
| 220 |
+ u["two"] = 2; |
|
| 221 |
+ this.setMemory(u); |
|
| 222 |
+ };' |
|
| 223 |
+ @agent.save! |
|
| 224 |
+ @agent.check |
|
| 225 |
+ expect(@agent.memory).to eq({ "one" => 1, "two" => 2 })
|
|
| 226 |
+ @agent.save! |
|
| 227 |
+ expect { @agent.reload.memory }.not_to raise_error
|
|
| 228 |
+ end |
|
| 229 |
+ end |
|
| 230 |
+ |
|
| 215 | 231 |
describe "deleteKey" do |
| 216 | 232 |
it "deletes a memory key" do |
| 217 | 233 |
@agent.memory = { foo: "baz" }
|