Browse Source

Extract common code to Axes class-side helpers.

Herbert Vojčík 6 years ago
parent
commit
45563d44b6
2 changed files with 222 additions and 178 deletions
  1. 187 152
      src/Axxord.js
  2. 35 26
      src/Axxord.st

+ 187 - 152
src/Axxord.js

@@ -114,6 +114,155 @@ messageSends: ["accept:enact:", "new", "and:", "<=", "size", "=", "copyFrom:to:"
 }),
 $globals.Axes.a$cls);
 
+$core.addMethod(
+$core.method({
+selector: "on:at:consume:",
+protocol: "delegated",
+fn: function (anObject,aCollection,aBlock){
+var self=this,$self=this;
+var value;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $early={};
+try {
+value=$recv(anObject)._atAxes_ifAbsent_(aCollection,(function(){
+throw $early=[anObject];
+
+}));
+return $recv(aBlock)._value_(value);
+}
+catch(e) {if(e===$early)return e[0]; throw e}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:at:consume:",{anObject:anObject,aCollection:aCollection,aBlock:aBlock,value:value},$globals.Axes.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject", "aCollection", "aBlock"],
+source: "on: anObject at: aCollection consume: aBlock\x0a\x09| value |\x0a\x09value := anObject atAxes: aCollection ifAbsent: [ ^ anObject ].\x0a\x09^ aBlock value: value",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["atAxes:ifAbsent:", "value:"]
+}),
+$globals.Axes.a$cls);
+
+$core.addMethod(
+$core.method({
+selector: "on:at:ifAbsent:",
+protocol: "delegated",
+fn: function (anObject,aCollection,aBlock){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $early={};
+try {
+return $recv(aCollection)._inject_into_(anObject,(function(soFar,segment){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(segment)._asAxisIn_ifAbsent_(soFar,(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx3) {
+//>>excludeEnd("ctx");
+throw $early=[$recv(aBlock)._value()];
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
+//>>excludeEnd("ctx");
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({soFar:soFar,segment:segment},$ctx1,1)});
+//>>excludeEnd("ctx");
+}));
+}
+catch(e) {if(e===$early)return e[0]; throw e}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:at:ifAbsent:",{anObject:anObject,aCollection:aCollection,aBlock:aBlock},$globals.Axes.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject", "aCollection", "aBlock"],
+source: "on: anObject at: aCollection ifAbsent: aBlock\x0a\x09^ aCollection inject: anObject into: [ :soFar :segment |\x0a\x09\x09segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"]
+}),
+$globals.Axes.a$cls);
+
+$core.addMethod(
+$core.method({
+selector: "on:at:ifAbsent:put:",
+protocol: "delegated",
+fn: function (anObject,aCollection,aBlock,value){
+var self=this,$self=this;
+var penultimate;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+penultimate=$recv(anObject)._atAxes_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
+return $recv($recv(aCollection)._last())._asAxisIn_ifAbsent_put_(penultimate,aBlock,value);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:at:ifAbsent:put:",{anObject:anObject,aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$globals.Axes.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject", "aCollection", "aBlock", "value"],
+source: "on: anObject at: aCollection ifAbsent: aBlock put: value\x0a\x09| penultimate |\x0a\x09penultimate := anObject atAxes: aCollection allButLast ifAbsent: aBlock.\x0a\x09^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"]
+}),
+$globals.Axes.a$cls);
+
+$core.addMethod(
+$core.method({
+selector: "on:at:transform:",
+protocol: "delegated",
+fn: function (anObject,aCollection,aBlock){
+var self=this,$self=this;
+var value,newValue;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1,$2,$receiver;
+var $early={};
+try {
+value=$recv(anObject)._atAxes_ifAbsent_(aCollection,(function(){
+throw $early=[anObject];
+
+}));
+newValue=$recv(aBlock)._value_(value);
+$1=$recv(value).__eq_eq(newValue);
+if(!$core.assert($1)){
+$recv(anObject)._atAxes_ifAbsent_put_(aCollection,(function(){
+throw $early=[anObject];
+
+}),newValue);
+}
+$2=$recv(anObject)._axxord();
+if(($receiver = $2) == null || $receiver.a$nil){
+$2;
+} else {
+var axon;
+axon=$receiver;
+$recv(axon)._changed_(aCollection);
+}
+return self;
+}
+catch(e) {if(e===$early)return e[0]; throw e}
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"on:at:transform:",{anObject:anObject,aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$globals.Axes.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: ["anObject", "aCollection", "aBlock"],
+source: "on: anObject at: aCollection transform: aBlock\x0a\x09| value newValue |\x0a\x09value := anObject atAxes: aCollection ifAbsent: [ ^ anObject ].\x0a\x09newValue := aBlock value: value.\x0a\x09value == newValue ifFalse: [ anObject atAxes: aCollection ifAbsent: [ ^ anObject ] put: newValue ].\x0a\x09anObject axxord ifNotNil: [:axon | axon changed: aCollection]",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "axxord", "changed:"]
+}),
+$globals.Axes.a$cls);
+
 $core.addMethod(
 $core.method({
 selector: "parse:",
@@ -1400,37 +1549,17 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $early={};
-try {
-return $recv(aCollection)._inject_into_(self,(function(soFar,segment){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(segment)._asAxisIn_ifAbsent_(soFar,(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-throw $early=[$recv(aBlock)._value()];
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({soFar:soFar,segment:segment},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_ifAbsent_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:",{aCollection:aCollection,aBlock:aBlock},$globals.JSObjectProxy)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "atAxes: aCollection ifAbsent: aBlock\x0a\x09^ aCollection inject: self into: [ :soFar :segment |\x0a\x09\x09segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]",
-referencedClasses: [],
+source: "atAxes: aCollection ifAbsent: aBlock\x0a\x09^ Axes on: self at: aCollection ifAbsent: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"]
+messageSends: ["on:at:ifAbsent:"]
 }),
 $globals.JSObjectProxy);
 
@@ -1440,22 +1569,20 @@ selector: "atAxes:ifAbsent:put:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock,value){
 var self=this,$self=this;
-var penultimate;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-penultimate=$self._atAxes_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
-return $recv($recv(aCollection)._last())._asAxisIn_ifAbsent_put_(penultimate,aBlock,value);
+return $recv($globals.Axes)._on_at_ifAbsent_put_(self,aCollection,aBlock,value);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$globals.JSObjectProxy)});
+}, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value},$globals.JSObjectProxy)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock", "value"],
-source: "atAxes: aCollection ifAbsent: aBlock put: value\x0a\x09| penultimate |\x0a\x09penultimate := self atAxes: aCollection allButLast ifAbsent: aBlock.\x0a\x09^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value",
-referencedClasses: [],
+source: "atAxes: aCollection ifAbsent: aBlock put: value\x0a\x09^ Axes on: self at: aCollection ifAbsent: aBlock put: value",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"]
+messageSends: ["on:at:ifAbsent:put:"]
 }),
 $globals.JSObjectProxy);
 
@@ -1465,29 +1592,20 @@ selector: "axes:consume:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock){
 var self=this,$self=this;
-var value;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $early={};
-try {
-value=$self._atAxes_ifAbsent_(aCollection,(function(){
-throw $early=[self];
-
-}));
-return $recv(aBlock)._value_(value);
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_consume_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock,value:value},$globals.JSObjectProxy)});
+}, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock},$globals.JSObjectProxy)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "axes: aCollection consume: aBlock\x0a\x09| value |\x0a\x09value := self atAxes: aCollection ifAbsent: [ ^self ].\x0a\x09^ aBlock value: value",
-referencedClasses: [],
+source: "axes: aCollection consume: aBlock\x0a\x09^ Axes on: self at: aCollection consume: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "value:"]
+messageSends: ["on:at:consume:"]
 }),
 $globals.JSObjectProxy);
 
@@ -1497,46 +1615,20 @@ selector: "axes:transform:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock){
 var self=this,$self=this;
-var value,newValue;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$receiver;
-var $early={};
-try {
-value=$self._atAxes_ifAbsent_(aCollection,(function(){
-throw $early=[self];
-
-}));
-newValue=$recv(aBlock)._value_(value);
-$1=$recv(value).__eq_eq(newValue);
-if(!$core.assert($1)){
-$self._atAxes_ifAbsent_put_(aCollection,(function(){
-throw $early=[self];
-
-}),newValue);
-}
-$2=$self._axxord();
-if(($receiver = $2) == null || $receiver.a$nil){
-$2;
-} else {
-var axon;
-axon=$receiver;
-$recv(axon)._changed_(aCollection);
-}
-return self;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_transform_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$globals.JSObjectProxy)});
+}, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock},$globals.JSObjectProxy)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "axes: aCollection transform: aBlock\x0a\x09| value newValue |\x0a\x09value := self atAxes: aCollection ifAbsent: [ ^self ].\x0a\x09newValue := aBlock value: value.\x0a\x09value == newValue ifFalse: [ self atAxes: aCollection ifAbsent: [ ^self ] put: newValue ].\x0a\x09self axxord ifNotNil: [:axon | axon changed: aCollection]",
-referencedClasses: [],
+source: "axes: aCollection transform: aBlock\x0a\x09^ Axes on: self at: aCollection transform: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "axxord", "changed:"]
+messageSends: ["on:at:transform:"]
 }),
 $globals.JSObjectProxy);
 
@@ -1719,37 +1811,17 @@ var self=this,$self=this;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $early={};
-try {
-return $recv(aCollection)._inject_into_(self,(function(soFar,segment){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(segment)._asAxisIn_ifAbsent_(soFar,(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx3) {
-//>>excludeEnd("ctx");
-throw $early=[$recv(aBlock)._value()];
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
-//>>excludeEnd("ctx");
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({soFar:soFar,segment:segment},$ctx1,1)});
-//>>excludeEnd("ctx");
-}));
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_ifAbsent_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:",{aCollection:aCollection,aBlock:aBlock},$globals.Object)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "atAxes: aCollection ifAbsent: aBlock\x0a\x09^ aCollection inject: self into: [ :soFar :segment |\x0a\x09\x09segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]",
-referencedClasses: [],
+source: "atAxes: aCollection ifAbsent: aBlock\x0a\x09^ Axes on: self at: aCollection ifAbsent: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"]
+messageSends: ["on:at:ifAbsent:"]
 }),
 $globals.Object);
 
@@ -1759,22 +1831,20 @@ selector: "atAxes:ifAbsent:put:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock,value){
 var self=this,$self=this;
-var penultimate;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-penultimate=$self._atAxes_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
-return $recv($recv(aCollection)._last())._asAxisIn_ifAbsent_put_(penultimate,aBlock,value);
+return $recv($globals.Axes)._on_at_ifAbsent_put_(self,aCollection,aBlock,value);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$globals.Object)});
+}, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value},$globals.Object)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock", "value"],
-source: "atAxes: aCollection ifAbsent: aBlock put: value\x0a\x09| penultimate |\x0a\x09penultimate := self atAxes: aCollection allButLast ifAbsent: aBlock.\x0a\x09^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value",
-referencedClasses: [],
+source: "atAxes: aCollection ifAbsent: aBlock put: value\x0a\x09^ Axes on: self at: aCollection ifAbsent: aBlock put: value",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"]
+messageSends: ["on:at:ifAbsent:put:"]
 }),
 $globals.Object);
 
@@ -1784,29 +1854,20 @@ selector: "axes:consume:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock){
 var self=this,$self=this;
-var value;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $early={};
-try {
-value=$self._atAxes_ifAbsent_(aCollection,(function(){
-throw $early=[self];
-
-}));
-return $recv(aBlock)._value_(value);
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_consume_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock,value:value},$globals.Object)});
+}, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock},$globals.Object)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "axes: aCollection consume: aBlock\x0a\x09| value |\x0a\x09value := self atAxes: aCollection ifAbsent: [ ^self ].\x0a\x09^ aBlock value: value",
-referencedClasses: [],
+source: "axes: aCollection consume: aBlock\x0a\x09^ Axes on: self at: aCollection consume: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "value:"]
+messageSends: ["on:at:consume:"]
 }),
 $globals.Object);
 
@@ -1816,46 +1877,20 @@ selector: "axes:transform:",
 protocol: "*Axxord",
 fn: function (aCollection,aBlock){
 var self=this,$self=this;
-var value,newValue;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
-var $1,$2,$receiver;
-var $early={};
-try {
-value=$self._atAxes_ifAbsent_(aCollection,(function(){
-throw $early=[self];
-
-}));
-newValue=$recv(aBlock)._value_(value);
-$1=$recv(value).__eq_eq(newValue);
-if(!$core.assert($1)){
-$self._atAxes_ifAbsent_put_(aCollection,(function(){
-throw $early=[self];
-
-}),newValue);
-}
-$2=$self._axxord();
-if(($receiver = $2) == null || $receiver.a$nil){
-$2;
-} else {
-var axon;
-axon=$receiver;
-$recv(axon)._changed_(aCollection);
-}
-return self;
-}
-catch(e) {if(e===$early)return e[0]; throw e}
+return $recv($globals.Axes)._on_at_transform_(self,aCollection,aBlock);
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$globals.Object)});
+}, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock},$globals.Object)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: ["aCollection", "aBlock"],
-source: "axes: aCollection transform: aBlock\x0a\x09| value newValue |\x0a\x09value := self atAxes: aCollection ifAbsent: [ ^self ].\x0a\x09newValue := aBlock value: value.\x0a\x09value == newValue ifFalse: [ self atAxes: aCollection ifAbsent: [ ^self ] put: newValue ].\x0a\x09self axxord ifNotNil: [:axon | axon changed: aCollection]",
-referencedClasses: [],
+source: "axes: aCollection transform: aBlock\x0a\x09^ Axes on: self at: aCollection transform: aBlock",
+referencedClasses: ["Axes"],
 //>>excludeEnd("ide");
-messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "axxord", "changed:"]
+messageSends: ["on:at:transform:"]
 }),
 $globals.Object);
 

+ 35 - 26
src/Axxord.st

@@ -3,6 +3,33 @@ Object subclass: #Axes
 	instanceVariableNames: ''
 	package: 'Axxord'!
 
+!Axes class methodsFor: 'delegated'!
+
+on: anObject at: aCollection consume: aBlock
+	| value |
+	value := anObject atAxes: aCollection ifAbsent: [ ^ anObject ].
+	^ aBlock value: value
+!
+
+on: anObject at: aCollection ifAbsent: aBlock
+	^ aCollection inject: anObject into: [ :soFar :segment |
+		segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]
+!
+
+on: anObject at: aCollection ifAbsent: aBlock put: value
+	| penultimate |
+	penultimate := anObject atAxes: aCollection allButLast ifAbsent: aBlock.
+	^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value
+!
+
+on: anObject at: aCollection transform: aBlock
+	| value newValue |
+	value := anObject atAxes: aCollection ifAbsent: [ ^ anObject ].
+	newValue := aBlock value: value.
+	value == newValue ifFalse: [ anObject atAxes: aCollection ifAbsent: [ ^ anObject ] put: newValue ].
+	anObject axxord ifNotNil: [:axon | axon changed: aCollection]
+! !
+
 !Axes class methodsFor: 'factory'!
 
 newInterestThru: anAspect doing: aBlock
@@ -314,28 +341,19 @@ asAxisIn: anObject ifAbsent: aBlock put: anotherObject
 !
 
 atAxes: aCollection ifAbsent: aBlock
-	^ aCollection inject: self into: [ :soFar :segment |
-		segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]
+	^ Axes on: self at: aCollection ifAbsent: aBlock
 !
 
 atAxes: aCollection ifAbsent: aBlock put: value
-	| penultimate |
-	penultimate := self atAxes: aCollection allButLast ifAbsent: aBlock.
-	^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value
+	^ Axes on: self at: aCollection ifAbsent: aBlock put: value
 !
 
 axes: aCollection consume: aBlock
-	| value |
-	value := self atAxes: aCollection ifAbsent: [ ^self ].
-	^ aBlock value: value
+	^ Axes on: self at: aCollection consume: aBlock
 !
 
 axes: aCollection transform: aBlock
-	| value newValue |
-	value := self atAxes: aCollection ifAbsent: [ ^self ].
-	newValue := aBlock value: value.
-	value == newValue ifFalse: [ self atAxes: aCollection ifAbsent: [ ^self ] put: newValue ].
-	self axxord ifNotNil: [:axon | axon changed: aCollection]
+	^ Axes on: self at: aCollection transform: aBlock
 !
 
 axxord
@@ -371,28 +389,19 @@ asAxisIn: anObject ifAbsent: aBlock put: anotherObject
 !
 
 atAxes: aCollection ifAbsent: aBlock
-	^ aCollection inject: self into: [ :soFar :segment |
-		segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]
+	^ Axes on: self at: aCollection ifAbsent: aBlock
 !
 
 atAxes: aCollection ifAbsent: aBlock put: value
-	| penultimate |
-	penultimate := self atAxes: aCollection allButLast ifAbsent: aBlock.
-	^ aCollection last asAxisIn: penultimate ifAbsent: aBlock put: value
+	^ Axes on: self at: aCollection ifAbsent: aBlock put: value
 !
 
 axes: aCollection consume: aBlock
-	| value |
-	value := self atAxes: aCollection ifAbsent: [ ^self ].
-	^ aBlock value: value
+	^ Axes on: self at: aCollection consume: aBlock
 !
 
 axes: aCollection transform: aBlock
-	| value newValue |
-	value := self atAxes: aCollection ifAbsent: [ ^self ].
-	newValue := aBlock value: value.
-	value == newValue ifFalse: [ self atAxes: aCollection ifAbsent: [ ^self ] put: newValue ].
-	self axxord ifNotNil: [:axon | axon changed: aCollection]
+	^ Axes on: self at: aCollection transform: aBlock
 !
 
 axxord