define(["amber/boot", "amber_core/Kernel-Collections", "amber_core/Kernel-Exceptions", "amber_core/Kernel-Infrastructure", "amber_core/Kernel-Objects"], function($boot){"use strict"; if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil; if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver; var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals; if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu; $core.addPackage("Axxord"); $core.packages["Axxord"].innerEval = function (expr) { return eval(expr); }; $core.packages["Axxord"].transport = {"type":"amd","amdNamespace":"axxord"}; $core.addClass("Axes", $globals.Object, [], "Axxord"); $core.addMethod( $core.method({ selector: "newInterestThru:doing:", protocol: "factory", fn: function (anAspect,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $2,$3,$1,$5,$4; return $recv($recv($globals.PluggableInterest)._new())._accept_enact_((function(aspect){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $2=$recv(aspect)._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["size"]=1; //>>excludeEnd("ctx"); $3=$recv(anAspect)._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["size"]=2; //>>excludeEnd("ctx"); $1=$recv($2).__lt_eq($3); if($core.assert($1)){ $5=$recv(aspect)._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["size"]=3; //>>excludeEnd("ctx"); $4=$recv(anAspect)._copyFrom_to_((1),$5); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["copyFrom:to:"]=1; //>>excludeEnd("ctx"); return $recv(aspect).__eq($4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["="]=1; //>>excludeEnd("ctx"); } else { return $recv(anAspect).__eq($recv(aspect)._copyFrom_to_((1),$recv(anAspect)._size())); } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({aspect:aspect},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"newInterestThru:doing:",{anAspect:anAspect,aBlock:aBlock},$globals.Axes.a$cls)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect", "aBlock"], source: "newInterestThru: anAspect doing: aBlock\x0a\x09^ PluggableInterest new\x0a\x09\x09accept: [ :aspect | aspect size <= anAspect size\x0a\x09\x09\x09ifTrue: [ aspect = (anAspect copyFrom: 1 to: aspect size) ]\x0a\x09\x09\x09ifFalse: [ anAspect = (aspect copyFrom: 1 to: anAspect size) ] ]\x0a\x09\x09enact: aBlock", referencedClasses: ["PluggableInterest"], //>>excludeEnd("ide"); messageSends: ["accept:enact:", "new", "ifTrue:ifFalse:", "<=", "size", "=", "copyFrom:to:"] }), $globals.Axes.a$cls); $core.addMethod( $core.method({ selector: "newInterestUpTo:doing:", protocol: "factory", fn: function (anAspect,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $2,$3,$1; return $recv($recv($globals.PluggableInterest)._new())._accept_enact_((function(changedAspect){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $2=$recv(changedAspect)._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["size"]=1; //>>excludeEnd("ctx"); $3=$recv(anAspect)._size(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["size"]=2; //>>excludeEnd("ctx"); $1=$recv($2).__lt_eq($3); return $recv($1)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv(changedAspect).__eq($recv(anAspect)._copyFrom_to_((1),$recv(changedAspect)._size())); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({changedAspect:changedAspect},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"newInterestUpTo:doing:",{anAspect:anAspect,aBlock:aBlock},$globals.Axes.a$cls)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect", "aBlock"], source: "newInterestUpTo: anAspect doing: aBlock\x0a\x09^ PluggableInterest new\x0a\x09\x09accept: [ :changedAspect | changedAspect size <= anAspect size and:\x0a\x09\x09\x09[changedAspect = (anAspect copyFrom: 1 to: changedAspect size)] ]\x0a\x09\x09enact: aBlock", referencedClasses: ["PluggableInterest"], //>>excludeEnd("ide"); messageSends: ["accept:enact:", "new", "and:", "<=", "size", "=", "copyFrom:to:"] }), $globals.Axes.a$cls); $core.addMethod( $core.method({ selector: "parse:", protocol: "parsing", fn: function (message){ var self=this,$self=this; var result,stack,anArray; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3,$5,$4,$6,$7,$8,$9,$10,$11; anArray=$recv(message)._tokenize_(" "); result=[]; stack=[result]; $recv(anArray)._do_((function(each){ var asNum,inner,close; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); close=(0); close; inner=each; inner; $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); $1=$recv(inner)._notEmpty(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["notEmpty"]=1; //>>excludeEnd("ctx"); return $recv($1)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx4) { //>>excludeEnd("ctx"); $2=$recv(inner)._first(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx4.sendIdx["first"]=1; //>>excludeEnd("ctx"); return $recv($2).__eq("("); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx4.sendIdx["="]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["and:"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)}); //>>excludeEnd("ctx"); }))._whileTrue_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); inner=$recv(inner)._allButFirst(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["allButFirst"]=1; //>>excludeEnd("ctx"); inner; $3=stack; $5=$recv(stack)._last(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["last"]=1; //>>excludeEnd("ctx"); $4=$recv($5)._add_([]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["add:"]=2; //>>excludeEnd("ctx"); return $recv($3)._add_($4); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["add:"]=1; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["whileTrue:"]=1; //>>excludeEnd("ctx"); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); $6=$recv(inner)._notEmpty(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["notEmpty"]=2; //>>excludeEnd("ctx"); return $recv($6)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx4) { //>>excludeEnd("ctx"); $7=$recv(inner)._last(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx4.sendIdx["last"]=2; //>>excludeEnd("ctx"); return $recv($7).__eq(")"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx4.sendIdx["="]=2; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["and:"]=2; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)}); //>>excludeEnd("ctx"); }))._whileTrue_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); inner=$recv(inner)._allButLast(); inner; close=$recv(close).__plus((1)); return close; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)}); //>>excludeEnd("ctx"); })); $8=$recv($recv(inner)._notEmpty())._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv(inner)._first()).__eq("~"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx3.sendIdx["="]=3; //>>excludeEnd("ctx"); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,8)}); //>>excludeEnd("ctx"); })); if($core.assert($8)){ inner=[$recv(inner)._allButFirst()]; inner; } $9=$recv(inner)._isString(); if($core.assert($9)){ asNum=$recv($recv(inner)._ifEmpty_((function(){ return "NaN"; })))._asNumber(); } else { asNum=inner; } asNum; $10=$recv(asNum).__eq(asNum); if($core.assert($10)){ $11=$recv(stack)._last(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["last"]=3; //>>excludeEnd("ctx"); $recv($11)._add_(asNum); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["add:"]=3; //>>excludeEnd("ctx"); } else { $recv(inner)._ifNotEmpty_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv(stack)._last())._add_(inner); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,15)}); //>>excludeEnd("ctx"); })); } return $recv(close)._timesRepeat_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv(stack)._removeLast(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,16)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each,asNum:asNum,inner:inner,close:close},$ctx1,1)}); //>>excludeEnd("ctx"); })); return result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"parse:",{message:message,result:result,stack:stack,anArray:anArray},$globals.Axes.a$cls)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["message"], source: "parse: message\x0a\x09| result stack anArray |\x0a\x09anArray := message tokenize: ' '.\x0a\x09result := #().\x0a\x09stack := { result }.\x0a\x09anArray do: [ :each |\x0a\x09\x09| asNum inner close |\x0a\x09\x09close := 0.\x0a\x09\x09inner := each.\x0a\x09\x09[ inner notEmpty and: [ inner first = '(' ]] whileTrue: [ inner := inner allButFirst. stack add: (stack last add: #()) ].\x0a\x09\x09[ inner notEmpty and: [ inner last = ')' ]] whileTrue: [ inner := inner allButLast. close := close + 1 ].\x0a\x09\x09(inner notEmpty and: [ inner first = '~' ]) ifTrue: [ inner := { inner allButFirst } ].\x0a\x09\x09asNum := inner isString ifTrue: [ (inner ifEmpty: [ 'NaN' ]) asNumber ] ifFalse: [ inner ].\x0a\x09\x09asNum = asNum ifTrue: [ stack last add: asNum ] ifFalse: [\x0a\x09\x09\x09inner ifNotEmpty: [ stack last add: inner ] ].\x0a\x09\x09close timesRepeat: [ stack removeLast ] ].\x0a\x09^ result", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["tokenize:", "do:", "whileTrue:", "and:", "notEmpty", "=", "first", "allButFirst", "add:", "last", "allButLast", "+", "ifTrue:", "ifTrue:ifFalse:", "isString", "asNumber", "ifEmpty:", "ifNotEmpty:", "timesRepeat:", "removeLast"] }), $globals.Axes.a$cls); $core.addClass("Axolator", $globals.Object, ["root"], "Axxord"); $core.addMethod( $core.method({ selector: "model:modify:", protocol: "action", fn: function (anEavModel,aBlock){ var self=this,$self=this; var newValue; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); newValue=$recv(aBlock)._value_($recv(anEavModel)._on_(self)); $recv(anEavModel)._on_put_(self,$recv(newValue)._deepCopy()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"model:modify:",{anEavModel:anEavModel,aBlock:aBlock,newValue:newValue},$globals.Axolator)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anEavModel", "aBlock"], source: "model: anEavModel modify: aBlock\x0a\x0a| newValue |\x0anewValue := aBlock value: (anEavModel on: self).\x0aanEavModel on: self put: newValue deepCopy", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value:", "on:", "on:put:", "deepCopy"] }), $globals.Axolator); $core.addMethod( $core.method({ selector: "model:read:", protocol: "action", fn: function (anEavModel,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv(aBlock)._value_($recv($recv(anEavModel)._on_(self))._deepCopy()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"model:read:",{anEavModel:anEavModel,aBlock:aBlock},$globals.Axolator)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anEavModel", "aBlock"], source: "model: anEavModel read: aBlock\x0a\x0aaBlock value: (anEavModel on: self) deepCopy", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value:", "deepCopy", "on:"] }), $globals.Axolator); $core.addMethod( $core.method({ selector: "root", protocol: "accessing", fn: function (){ var self=this,$self=this; return $self["@root"]; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "root\x0a\x0a^root", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.Axolator); $core.addMethod( $core.method({ selector: "root:", protocol: "accessing", fn: function (anObject){ var self=this,$self=this; $self["@root"]=anObject; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "root: anObject\x0a\x0aroot := anObject", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.Axolator); $core.addMethod( $core.method({ selector: "on:", protocol: "instance creation", fn: function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._new())._root_(anObject); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject},$globals.Axolator.a$cls)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "on: anObject\x0a^self new root: anObject", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["root:", "new"] }), $globals.Axolator.a$cls); $core.addClass("Axon", $globals.Object, ["factory"], "Axxord"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.Axon.comment="I represent a pub-sub based on a key (called 'aspect').\x0aI manage aspect-block subscriptions (called 'interests') as well as run blocks of dirtied interests.\x0aThe interest objects are responsible of decision if the change of an aspect is relevant for them.\x0aInterest object must be subclasses of `AxonInterest`.\x0a\x0aMy subclasses must provide implementation for:\x0a\x0a - add:\x0a - do:\x0a - clean"; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "add:", protocol: "primitive ops", fn: function (anInterest){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"add:",{anInterest:anInterest},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anInterest"], source: "add: anInterest\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "addInterest:", protocol: "accessing", fn: function (anInterest){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $recv(anInterest)._flag(); $1=$recv(anInterest)._yourself(); $self._add_($1); $self._dirty_(true); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"addInterest:",{anInterest:anInterest},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anInterest"], source: "addInterest: anInterest\x0a\x09self\x0a\x09\x09add: (anInterest flag; yourself);\x0a\x09\x09dirty: true", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["add:", "flag", "yourself", "dirty:"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "changed:", protocol: "change-update", fn: function (anAspect){ var self=this,$self=this; var needsToRun; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; needsToRun=false; $self._do_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $1=$recv(each)._accepts_(anAspect); if($core.assert($1)){ $recv(each)._flag(); needsToRun=true; return needsToRun; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)}); //>>excludeEnd("ctx"); })); $self._dirty_(needsToRun); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"changed:",{anAspect:anAspect,needsToRun:needsToRun},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect"], source: "changed: anAspect\x0a\x09| needsToRun |\x0a\x09needsToRun := false.\x0a\x09self do: [ :each |\x0a\x09\x09(each accepts: anAspect) ifTrue: [\x0a\x09\x09\x09each flag.\x0a\x09\x09\x09needsToRun := true ]].\x0a\x09self dirty: needsToRun", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["do:", "ifTrue:", "accepts:", "flag", "dirty:"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "changedAll", protocol: "change-update", fn: function (){ var self=this,$self=this; var needsToRun; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); needsToRun=false; $self._do_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $recv(each)._flag(); needsToRun=true; return needsToRun; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)}); //>>excludeEnd("ctx"); })); $self._dirty_(needsToRun); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"changedAll",{needsToRun:needsToRun},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "changedAll\x0a\x09| needsToRun |\x0a\x09needsToRun := false.\x0a\x09self do: [ :each |\x0a\x09\x09each flag.\x0a\x09\x09needsToRun := true ].\x0a\x09self dirty: needsToRun", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["do:", "flag", "dirty:"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "clean", protocol: "primitive ops", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"clean",{},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "clean\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "dirty:", protocol: "private", fn: function (aBoolean){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); if($core.assert(aBoolean)){ $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._run(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)}); //>>excludeEnd("ctx"); }))._fork(); } return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"dirty:",{aBoolean:aBoolean},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBoolean"], source: "dirty: aBoolean\x0a\x09aBoolean ifTrue: [[ self run ] fork]", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ifTrue:", "fork", "run"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "do:", protocol: "primitive ops", fn: function (aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock"], source: "do: aBlock\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.Axon); $core.addMethod( $core.method({ selector: "run", protocol: "private", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1,$2,$3; $recv((function(){ var needsClean; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); needsClean=false; needsClean; $self._do_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); $1=$recv(each)._isFlagged(); if($core.assert($1)){ $recv(each)._run(); } $2=$recv(each)._isClosed(); if($core.assert($2)){ needsClean=true; return needsClean; } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)}); //>>excludeEnd("ctx"); })); $3=needsClean; if($core.assert($3)){ return $self._clean(); } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({needsClean:needsClean},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.Error,(function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._dirty_(true); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)}); //>>excludeEnd("ctx"); })); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"run",{},$globals.Axon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "run\x0a\x09[\x0a\x09\x09| needsClean |\x0a\x09 needsClean := false.\x0a\x09\x09self do: [ :each |\x0a\x09\x09\x09each isFlagged ifTrue: [ each run ].\x0a\x09 each isClosed ifTrue: [ needsClean := true ]\x0a\x09\x09].\x0a \x09needsClean ifTrue: [ self clean ]\x0a\x09] on: Error do: [ self dirty: true ]", referencedClasses: ["Error"], //>>excludeEnd("ide"); messageSends: ["on:do:", "do:", "ifTrue:", "isFlagged", "run", "isClosed", "clean", "dirty:"] }), $globals.Axon); $core.addClass("SimpleAxon", $globals.Axon, ["queue"], "Axxord"); $core.addMethod( $core.method({ selector: "add:", protocol: "primitive ops", fn: function (aSubscription){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($self["@queue"])._add_(aSubscription); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"add:",{aSubscription:aSubscription},$globals.SimpleAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aSubscription"], source: "add: aSubscription\x0a\x09queue add: aSubscription.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["add:"] }), $globals.SimpleAxon); $core.addMethod( $core.method({ selector: "clean", protocol: "primitive ops", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self["@queue"]=$recv($self["@queue"])._reject_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(each)._isClosed(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)}); //>>excludeEnd("ctx"); })); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"clean",{},$globals.SimpleAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "clean\x0a\x09queue := queue reject: [ :each | each isClosed ]", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["reject:", "isClosed"] }), $globals.SimpleAxon); $core.addMethod( $core.method({ selector: "do:", protocol: "primitive ops", fn: function (aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($self["@queue"])._do_(aBlock); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.SimpleAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock"], source: "do: aBlock\x0a\x09queue do: aBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["do:"] }), $globals.SimpleAxon); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); ( //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = true, //>>excludeEnd("ctx"); ($globals.SimpleAxon.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, [])); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = false; //>>excludeEnd("ctx");; $self["@queue"]=$recv($globals.OrderedCollection)._new(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.SimpleAxon)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize\x0a super initialize.\x0a\x09queue := OrderedCollection new", referencedClasses: ["OrderedCollection"], //>>excludeEnd("ide"); messageSends: ["initialize", "new"] }), $globals.SimpleAxon); $core.addClass("AxonInterest", $globals.Object, ["flagged"], "Axxord"); $core.addMethod( $core.method({ selector: "accepts:", protocol: "testing", fn: function (anAspect){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect"], source: "accepts: anAspect\x0a \x22Should return true if change for anAspect is relevant for this AxonInterest\x22\x0a self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "close", protocol: "action", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"close",{},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "close\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "enact", protocol: "action", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"enact",{},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "enact\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "flag", protocol: "accessing", fn: function (){ var self=this,$self=this; $self["@flagged"]=true; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "flag\x0a\x09flagged := true", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); ( //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = true, //>>excludeEnd("ctx"); ($globals.AxonInterest.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, [])); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = false; //>>excludeEnd("ctx");; $self["@flagged"]=false; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize\x0a\x09super initialize.\x0a flagged := false.", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["initialize"] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "isClosed", protocol: "testing", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._subclassResponsibility(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isClosed",{},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isClosed\x0a\x09self subclassResponsibility", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["subclassResponsibility"] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "isFlagged", protocol: "testing", fn: function (){ var self=this,$self=this; return $self["@flagged"]; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isFlagged\x0a\x09^flagged", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.AxonInterest); $core.addMethod( $core.method({ selector: "run", protocol: "action", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $self["@flagged"]=false; $self["@flagged"]; return $self._enact(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.AxonOff,(function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._close(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)}); //>>excludeEnd("ctx"); })); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"run",{},$globals.AxonInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "run\x0a\x09[ flagged := false. self enact ]\x0a on: AxonOff do: [ self close ]", referencedClasses: ["AxonOff"], //>>excludeEnd("ide"); messageSends: ["on:do:", "enact", "close"] }), $globals.AxonInterest); $core.addClass("PluggableInterest", $globals.AxonInterest, ["acceptBlock", "enactBlock"], "Axxord"); $core.addMethod( $core.method({ selector: "accept:enact:", protocol: "accessing", fn: function (aBlock,anotherBlock){ var self=this,$self=this; $self["@acceptBlock"]=aBlock; $self["@enactBlock"]=anotherBlock; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock", "anotherBlock"], source: "accept: aBlock enact: anotherBlock\x0a\x09acceptBlock := aBlock.\x0a enactBlock := anotherBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.PluggableInterest); $core.addMethod( $core.method({ selector: "accepts:", protocol: "testing", fn: function (anAspect){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self["@acceptBlock"])._value_(anAspect); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.PluggableInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAspect"], source: "accepts: anAspect\x0a ^ acceptBlock value: anAspect", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value:"] }), $globals.PluggableInterest); $core.addMethod( $core.method({ selector: "close", protocol: "action", fn: function (){ var self=this,$self=this; $self["@acceptBlock"]=nil; $self["@enactBlock"]=nil; return self; }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "close\x0a\x09acceptBlock := nil.\x0a\x09enactBlock := nil", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.PluggableInterest); $core.addMethod( $core.method({ selector: "enact", protocol: "action", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($self["@enactBlock"])._value(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"enact",{},$globals.PluggableInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "enact\x0a\x09enactBlock value", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value"] }), $globals.PluggableInterest); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); ( //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = true, //>>excludeEnd("ctx"); ($globals.PluggableInterest.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, [])); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx1.supercall = false; //>>excludeEnd("ctx");; $self._close(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.PluggableInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize\x0a\x09super initialize.\x0a self close", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["initialize", "close"] }), $globals.PluggableInterest); $core.addMethod( $core.method({ selector: "isClosed", protocol: "testing", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self["@acceptBlock"])._isNil(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isClosed",{},$globals.PluggableInterest)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isClosed\x0a\x09^ acceptBlock isNil", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["isNil"] }), $globals.PluggableInterest); $core.addClass("AxonOff", $globals.Error, [], "Axxord"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.AxonOff.comment="Signal me from the subscription block to unsubscribe it."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:", protocol: "*Axxord", fn: function (anObject,aBlock){ var self=this,$self=this; var receiver,selector,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $5,$4,$3,$2,$1; var $early={}; try { selector=$self._first(); receiver=$recv(anObject)._yourself(); $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); result=$recv(receiver)._perform_(selector); return result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.MessageNotUnderstood,(function(mnu){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $5=$recv(mnu)._message(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["message"]=1; //>>excludeEnd("ctx"); $4=$recv($5)._selector(); $3=$recv($4).__eq(selector); $2=$recv($3)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv(mnu)._receiver()).__eq_eq(receiver); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)}); //>>excludeEnd("ctx"); })); $1=$recv($2)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv($recv(mnu)._message())._arguments())._isEmpty(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["and:"]=1; //>>excludeEnd("ctx"); if(!$core.assert($1)){ $recv(mnu)._resignal(); } throw $early=[$recv(aBlock)._value()]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)}); //>>excludeEnd("ctx"); })); return result; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock,receiver:receiver,selector:selector,result:result},$globals.Array)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock"], source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09| receiver selector result |\x0a\x09selector := self first.\x0a\x09receiver := anObject yourself. \x22JSObjectProxy hack\x22\x0a\x09\x0a\x09[ result := receiver perform: selector ]\x0a\x09on: MessageNotUnderstood do: [ :mnu |\x0a\x09\x09((mnu message selector = selector\x0a\x09\x09\x09and: [ mnu receiver == receiver ])\x0a\x09\x09\x09and: [ mnu message arguments isEmpty ])\x0a\x09\x09\x09ifFalse: [ mnu resignal ].\x0a\x09\x09^ aBlock value ].\x0a\x09^ result", referencedClasses: ["MessageNotUnderstood"], //>>excludeEnd("ide"); messageSends: ["first", "yourself", "on:do:", "perform:", "ifFalse:", "and:", "=", "selector", "message", "==", "receiver", "isEmpty", "arguments", "resignal", "value"] }), $globals.Array); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:put:", protocol: "*Axxord", fn: function (anObject,aBlock,anotherObject){ var self=this,$self=this; var receiver,selector,arguments_,result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $5,$4,$3,$2,$1; var $early={}; try { selector=$recv($self._first())._asMutator(); receiver=$recv(anObject)._yourself(); arguments_=[anotherObject]; $recv((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); result=$recv(receiver)._perform_withArguments_(selector,arguments_); return result; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }))._on_do_($globals.MessageNotUnderstood,(function(mnu){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); $5=$recv(mnu)._message(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["message"]=1; //>>excludeEnd("ctx"); $4=$recv($5)._selector(); $3=$recv($4).__eq(selector); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["="]=1; //>>excludeEnd("ctx"); $2=$recv($3)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv(mnu)._receiver()).__eq_eq(receiver); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)}); //>>excludeEnd("ctx"); })); $1=$recv($2)._and_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx3) { //>>excludeEnd("ctx"); return $recv($recv($recv(mnu)._message())._arguments()).__eq(arguments_); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); $ctx2.sendIdx["and:"]=1; //>>excludeEnd("ctx"); if(!$core.assert($1)){ $recv(mnu)._resignal(); } throw $early=[$recv(aBlock)._value()]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)}); //>>excludeEnd("ctx"); })); return result; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject,receiver:receiver,selector:selector,arguments_:arguments_,result:result},$globals.Array)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock", "anotherObject"], source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09| receiver selector arguments result |\x0a\x09selector := self first asMutator.\x0a\x09receiver := anObject yourself. \x22JSObjectProxy hack\x22\x0a\x09arguments := { anotherObject }.\x0a\x09\x0a\x09[ result := receiver perform: selector withArguments: arguments ]\x0a\x09on: MessageNotUnderstood do: [ :mnu |\x0a\x09\x09((mnu message selector = selector\x0a\x09\x09\x09and: [ mnu receiver == receiver ])\x0a\x09\x09\x09and: [ mnu message arguments = arguments ])\x0a\x09\x09\x09ifFalse: [ mnu resignal ].\x0a\x09\x09^ aBlock value ].\x0a\x09^ result", referencedClasses: ["MessageNotUnderstood"], //>>excludeEnd("ide"); messageSends: ["asMutator", "first", "yourself", "on:do:", "perform:withArguments:", "ifFalse:", "and:", "=", "selector", "message", "==", "receiver", "arguments", "resignal", "value"] }), $globals.Array); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:", protocol: "*Axxord", fn: function (anObject,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.JSObjectProxy)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock"], source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09^ aBlock value", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:put:", protocol: "*Axxord", fn: function (anObject,aBlock,anotherObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.JSObjectProxy)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock", "anotherObject"], source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09^ aBlock value", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ selector: "atAxes:ifAbsent:", protocol: "*Axxord", fn: function (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_(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} //>>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: [], //>>excludeEnd("ide"); messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ 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); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ 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} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock,value:value},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "value:"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ 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} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "axxord", "changed:"] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ selector: "axxord", protocol: "*Axxord", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self["@jsObject"].$axxord$; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axxord",{},$globals.JSObjectProxy)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "axxord\x0a", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ selector: "axxord:", protocol: "*Axxord", fn: function (anAxon){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self["@jsObject"].$axxord$ = anAxon; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axxord:",{anAxon:anAxon},$globals.JSObjectProxy)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAxon"], source: "axxord: anAxon\x0a", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.JSObjectProxy); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:", protocol: "*Axxord", fn: function (anObject,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; var $early={}; try { $1=$recv(anObject)._respondsTo_("at:ifAbsent:"); $recv($1)._ifTrue_ifFalse_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); return self; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Number)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock"], source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09(anObject respondsTo: #at:ifAbsent:)\x0a\x09\x09ifTrue: [ ^ anObject at: self ifAbsent: aBlock ]\x0a\x09\x09ifFalse: aBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:ifAbsent:"] }), $globals.Number); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:put:", protocol: "*Axxord", fn: function (anObject,aBlock,anotherObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; var $early={}; try { $1=$recv(anObject)._respondsTo_("at:put:"); $recv($1)._ifTrue_ifFalse_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); throw $early=[$recv(anObject)._at_put_(self,anotherObject)]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); return self; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.Number)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock", "anotherObject"], source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09(anObject respondsTo: #at:put:)\x0a\x09\x09ifTrue: [ ^ anObject at: self put: anotherObject ]\x0a\x09\x09ifFalse: aBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:put:"] }), $globals.Number); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:", protocol: "*Axxord", fn: function (anObject,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Object)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock"], source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09^ aBlock value", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value"] }), $globals.Object); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:put:", protocol: "*Axxord", fn: function (anObject,aBlock,anotherObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.Object)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock", "anotherObject"], source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09^ aBlock value", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["value"] }), $globals.Object); $core.addMethod( $core.method({ selector: "atAxes:ifAbsent:", protocol: "*Axxord", fn: function (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_(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} //>>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: [], //>>excludeEnd("ide"); messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"] }), $globals.Object); $core.addMethod( $core.method({ 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); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"] }), $globals.Object); $core.addMethod( $core.method({ 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} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock,value:value},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "value:"] }), $globals.Object); $core.addMethod( $core.method({ 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} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$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: [], //>>excludeEnd("ide"); messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "axxord", "changed:"] }), $globals.Object); $core.addMethod( $core.method({ selector: "axxord", protocol: "*Axxord", fn: function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return self.$axxord$; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axxord",{},$globals.Object)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "axxord\x0a", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.Object); $core.addMethod( $core.method({ selector: "axxord:", protocol: "*Axxord", fn: function (anAxon){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); self.$axxord$ = anAxon; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"axxord:",{anAxon:anAxon},$globals.Object)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anAxon"], source: "axxord: anAxon\x0a", referencedClasses: [], //>>excludeEnd("ide"); messageSends: [] }), $globals.Object); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:", protocol: "*Axxord", fn: function (anObject,aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; var $early={}; try { $1=$recv(anObject)._respondsTo_("at:ifAbsent:"); $recv($1)._ifTrue_ifFalse_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); return self; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.String)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock"], source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09(anObject respondsTo: #at:ifAbsent:)\x0a\x09\x09ifTrue: [ ^ anObject at: self ifAbsent: aBlock ]\x0a\x09\x09ifFalse: aBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:ifAbsent:"] }), $globals.String); $core.addMethod( $core.method({ selector: "asAxisIn:ifAbsent:put:", protocol: "*Axxord", fn: function (anObject,aBlock,anotherObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; var $early={}; try { $1=$recv(anObject)._respondsTo_("at:put:"); $recv($1)._ifTrue_ifFalse_((function(){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); throw $early=[$recv(anObject)._at_put_(self,anotherObject)]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)}); //>>excludeEnd("ctx"); }),aBlock); return self; } catch(e) {if(e===$early)return e[0]; throw e} //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.String)}); //>>excludeEnd("ctx"); }, //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject", "aBlock", "anotherObject"], source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09(anObject respondsTo: #at:put:)\x0a\x09\x09ifTrue: [ ^ anObject at: self put: anotherObject ]\x0a\x09\x09ifFalse: aBlock", referencedClasses: [], //>>excludeEnd("ide"); messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:put:"] }), $globals.String); });