|
@@ -100,19 +100,19 @@ selector: "modify:do:",
|
|
|
category: 'action',
|
|
|
fn: function (path,aBlock){
|
|
|
var self=this;
|
|
|
-var data;
|
|
|
var newValue;
|
|
|
-data=smalltalk.send(smalltalk.send(path,"_allButLast",[]),"_asTrapPathOn_",[smalltalk.send(self,"_payload",[])]);
|
|
|
-newValue=smalltalk.send(aBlock,"_value_",[smalltalk.send([smalltalk.send(path,"_last",[])],"_asTrapPathOn_",[data])]);
|
|
|
+var eavModel;
|
|
|
+eavModel=smalltalk.send(path,"_asEavModel",[]);
|
|
|
+newValue=smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[smalltalk.send(self,"_payload",[])])]);
|
|
|
smalltalk.send((function(){
|
|
|
-return smalltalk.send(smalltalk.send(path,"_last",[]),"_reverseTrapAt_put_",[data,newValue]);
|
|
|
+return smalltalk.send(eavModel,"_on_put_",[smalltalk.send(self,"_payload",[]),newValue]);
|
|
|
}),"_ensure_",[(function(){
|
|
|
return smalltalk.send(smalltalk.send(self,"_dispatcher",[]),"_changed_",[path]);
|
|
|
})]);
|
|
|
return self},
|
|
|
args: ["path", "aBlock"],
|
|
|
-source: "modify: path do: aBlock\x0a\x09| data newValue |\x0a data := path allButLast asTrapPathOn: self payload.\x0a\x09newValue := aBlock value: ({ path last } asTrapPathOn: data).\x0a [ path last reverseTrapAt: data put: newValue ] ensure: [ self dispatcher changed: path ]",
|
|
|
-messageSends: ["asTrapPathOn:", "payload", "allButLast", "value:", "last", "ensure:", "changed:", "dispatcher", "reverseTrapAt:put:"],
|
|
|
+source: "modify: path do: aBlock\x0a | newValue eavModel |\x0a eavModel := path asEavModel.\x0a newValue := aBlock value: (eavModel on: self payload).\x0a [ eavModel on: self payload put: newValue ] ensure: [ self dispatcher changed: path ]\x0a",
|
|
|
+messageSends: ["asEavModel", "value:", "on:", "payload", "ensure:", "changed:", "dispatcher", "on:put:"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.TrappedPlainModel);
|
|
@@ -124,13 +124,13 @@ selector: "read:do:",
|
|
|
category: 'action',
|
|
|
fn: function (path,aBlock){
|
|
|
var self=this;
|
|
|
-var data;
|
|
|
-data=smalltalk.send(path,"_asTrapPathOn_",[smalltalk.send(self,"_payload",[])]);
|
|
|
-smalltalk.send(aBlock,"_value_",[data]);
|
|
|
+var eavModel;
|
|
|
+eavModel=smalltalk.send(path,"_asEavModel",[]);
|
|
|
+smalltalk.send(aBlock,"_value_",[smalltalk.send(eavModel,"_on_",[smalltalk.send(self,"_payload",[])])]);
|
|
|
return self},
|
|
|
args: ["path", "aBlock"],
|
|
|
-source: "read: path do: aBlock\x0a\x09| data |\x0a data := path asTrapPathOn: self payload.\x0a\x09aBlock value: data.",
|
|
|
-messageSends: ["asTrapPathOn:", "payload", "value:"],
|
|
|
+source: "read: path do: aBlock\x0a | eavModel |\x0a eavModel := path asEavModel.\x0a aBlock value: (eavModel on: self payload)\x0a",
|
|
|
+messageSends: ["asEavModel", "value:", "on:", "payload"],
|
|
|
referencedClasses: []
|
|
|
}),
|
|
|
smalltalk.TrappedPlainModel);
|