Axxord.js 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725
  1. define(["amber/boot", "amber_core/Kernel-Collections", "amber_core/Kernel-Exceptions", "amber_core/Kernel-Objects"], function($boot){"use strict";
  2. if(!$boot.nilAsReceiver)$boot.nilAsReceiver=$boot.nil;
  3. if(!("nilAsValue" in $boot))$boot.nilAsValue=$boot.nilAsReceiver;
  4. var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
  5. if(!$boot.nilAsClass)$boot.nilAsClass=$boot.dnu;
  6. $core.addPackage("Axxord");
  7. $core.packages["Axxord"].innerEval = function (expr) { return eval(expr); };
  8. $core.packages["Axxord"].transport = {"type":"amd","amdNamespace":"axxord"};
  9. $core.addClass("Axes", $globals.Object, [], "Axxord");
  10. $core.addMethod(
  11. $core.method({
  12. selector: "parse:",
  13. protocol: "parsing",
  14. fn: function (message){
  15. var self=this,$self=this;
  16. var result,stack,anArray;
  17. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  18. return $core.withContext(function($ctx1) {
  19. //>>excludeEnd("ctx");
  20. var $1,$2,$3,$5,$4,$6,$7,$8,$9,$10,$11;
  21. anArray=$recv(message)._tokenize_(" ");
  22. result=[];
  23. stack=[result];
  24. $recv(anArray)._do_((function(each){
  25. var asNum,inner,close;
  26. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  27. return $core.withContext(function($ctx2) {
  28. //>>excludeEnd("ctx");
  29. close=(0);
  30. close;
  31. inner=each;
  32. inner;
  33. $recv((function(){
  34. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  35. return $core.withContext(function($ctx3) {
  36. //>>excludeEnd("ctx");
  37. $1=$recv(inner)._notEmpty();
  38. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  39. $ctx3.sendIdx["notEmpty"]=1;
  40. //>>excludeEnd("ctx");
  41. return $recv($1)._and_((function(){
  42. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  43. return $core.withContext(function($ctx4) {
  44. //>>excludeEnd("ctx");
  45. $2=$recv(inner)._first();
  46. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  47. $ctx4.sendIdx["first"]=1;
  48. //>>excludeEnd("ctx");
  49. return $recv($2).__eq("(");
  50. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  51. $ctx4.sendIdx["="]=1;
  52. //>>excludeEnd("ctx");
  53. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  54. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,3)});
  55. //>>excludeEnd("ctx");
  56. }));
  57. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58. $ctx3.sendIdx["and:"]=1;
  59. //>>excludeEnd("ctx");
  60. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  61. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  62. //>>excludeEnd("ctx");
  63. }))._whileTrue_((function(){
  64. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  65. return $core.withContext(function($ctx3) {
  66. //>>excludeEnd("ctx");
  67. inner=$recv(inner)._allButFirst();
  68. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  69. $ctx3.sendIdx["allButFirst"]=1;
  70. //>>excludeEnd("ctx");
  71. inner;
  72. $3=stack;
  73. $5=$recv(stack)._last();
  74. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  75. $ctx3.sendIdx["last"]=1;
  76. //>>excludeEnd("ctx");
  77. $4=$recv($5)._add_([]);
  78. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  79. $ctx3.sendIdx["add:"]=2;
  80. //>>excludeEnd("ctx");
  81. return $recv($3)._add_($4);
  82. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  83. $ctx3.sendIdx["add:"]=1;
  84. //>>excludeEnd("ctx");
  85. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  86. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  87. //>>excludeEnd("ctx");
  88. }));
  89. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  90. $ctx2.sendIdx["whileTrue:"]=1;
  91. //>>excludeEnd("ctx");
  92. $recv((function(){
  93. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  94. return $core.withContext(function($ctx3) {
  95. //>>excludeEnd("ctx");
  96. $6=$recv(inner)._notEmpty();
  97. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  98. $ctx3.sendIdx["notEmpty"]=2;
  99. //>>excludeEnd("ctx");
  100. return $recv($6)._and_((function(){
  101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  102. return $core.withContext(function($ctx4) {
  103. //>>excludeEnd("ctx");
  104. $7=$recv(inner)._last();
  105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  106. $ctx4.sendIdx["last"]=2;
  107. //>>excludeEnd("ctx");
  108. return $recv($7).__eq(")");
  109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  110. $ctx4.sendIdx["="]=2;
  111. //>>excludeEnd("ctx");
  112. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  113. }, function($ctx4) {$ctx4.fillBlock({},$ctx3,6)});
  114. //>>excludeEnd("ctx");
  115. }));
  116. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  117. $ctx3.sendIdx["and:"]=2;
  118. //>>excludeEnd("ctx");
  119. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  120. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
  121. //>>excludeEnd("ctx");
  122. }))._whileTrue_((function(){
  123. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  124. return $core.withContext(function($ctx3) {
  125. //>>excludeEnd("ctx");
  126. inner=$recv(inner)._allButLast();
  127. inner;
  128. close=$recv(close).__plus((1));
  129. return close;
  130. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  131. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,7)});
  132. //>>excludeEnd("ctx");
  133. }));
  134. $8=$recv($recv(inner)._notEmpty())._and_((function(){
  135. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  136. return $core.withContext(function($ctx3) {
  137. //>>excludeEnd("ctx");
  138. return $recv($recv(inner)._first()).__eq("~");
  139. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  140. $ctx3.sendIdx["="]=3;
  141. //>>excludeEnd("ctx");
  142. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  143. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,8)});
  144. //>>excludeEnd("ctx");
  145. }));
  146. if($core.assert($8)){
  147. inner=[$recv(inner)._allButFirst()];
  148. inner;
  149. }
  150. $9=$recv(inner)._isString();
  151. if($core.assert($9)){
  152. asNum=$recv($recv(inner)._ifEmpty_((function(){
  153. return "NaN";
  154. })))._asNumber();
  155. } else {
  156. asNum=inner;
  157. }
  158. asNum;
  159. $10=$recv(asNum).__eq(asNum);
  160. if($core.assert($10)){
  161. $11=$recv(stack)._last();
  162. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  163. $ctx2.sendIdx["last"]=3;
  164. //>>excludeEnd("ctx");
  165. $recv($11)._add_(asNum);
  166. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  167. $ctx2.sendIdx["add:"]=3;
  168. //>>excludeEnd("ctx");
  169. } else {
  170. $recv(inner)._ifNotEmpty_((function(){
  171. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  172. return $core.withContext(function($ctx3) {
  173. //>>excludeEnd("ctx");
  174. return $recv($recv(stack)._last())._add_(inner);
  175. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  176. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,15)});
  177. //>>excludeEnd("ctx");
  178. }));
  179. }
  180. return $recv(close)._timesRepeat_((function(){
  181. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  182. return $core.withContext(function($ctx3) {
  183. //>>excludeEnd("ctx");
  184. return $recv(stack)._removeLast();
  185. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  186. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,16)});
  187. //>>excludeEnd("ctx");
  188. }));
  189. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  190. }, function($ctx2) {$ctx2.fillBlock({each:each,asNum:asNum,inner:inner,close:close},$ctx1,1)});
  191. //>>excludeEnd("ctx");
  192. }));
  193. return result;
  194. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  195. }, function($ctx1) {$ctx1.fill(self,"parse:",{message:message,result:result,stack:stack,anArray:anArray},$globals.Axes.a$cls)});
  196. //>>excludeEnd("ctx");
  197. },
  198. //>>excludeStart("ide", pragmas.excludeIdeData);
  199. args: ["message"],
  200. 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",
  201. referencedClasses: [],
  202. //>>excludeEnd("ide");
  203. messageSends: ["tokenize:", "do:", "whileTrue:", "and:", "notEmpty", "=", "first", "allButFirst", "add:", "last", "allButLast", "+", "ifTrue:", "ifTrue:ifFalse:", "isString", "asNumber", "ifEmpty:", "ifNotEmpty:", "timesRepeat:", "removeLast"]
  204. }),
  205. $globals.Axes.a$cls);
  206. $core.addClass("Axolator", $globals.Object, ["root"], "Axxord");
  207. $core.addMethod(
  208. $core.method({
  209. selector: "model:modify:",
  210. protocol: "action",
  211. fn: function (anEavModel,aBlock){
  212. var self=this,$self=this;
  213. var newValue;
  214. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  215. return $core.withContext(function($ctx1) {
  216. //>>excludeEnd("ctx");
  217. newValue=$recv(aBlock)._value_($recv(anEavModel)._on_(self));
  218. $recv(anEavModel)._on_put_(self,$recv(newValue)._deepCopy());
  219. return self;
  220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  221. }, function($ctx1) {$ctx1.fill(self,"model:modify:",{anEavModel:anEavModel,aBlock:aBlock,newValue:newValue},$globals.Axolator)});
  222. //>>excludeEnd("ctx");
  223. },
  224. //>>excludeStart("ide", pragmas.excludeIdeData);
  225. args: ["anEavModel", "aBlock"],
  226. source: "model: anEavModel modify: aBlock\x0a\x0a| newValue |\x0anewValue := aBlock value: (anEavModel on: self).\x0aanEavModel on: self put: newValue deepCopy",
  227. referencedClasses: [],
  228. //>>excludeEnd("ide");
  229. messageSends: ["value:", "on:", "on:put:", "deepCopy"]
  230. }),
  231. $globals.Axolator);
  232. $core.addMethod(
  233. $core.method({
  234. selector: "model:read:",
  235. protocol: "action",
  236. fn: function (anEavModel,aBlock){
  237. var self=this,$self=this;
  238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  239. return $core.withContext(function($ctx1) {
  240. //>>excludeEnd("ctx");
  241. $recv(aBlock)._value_($recv($recv(anEavModel)._on_(self))._deepCopy());
  242. return self;
  243. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  244. }, function($ctx1) {$ctx1.fill(self,"model:read:",{anEavModel:anEavModel,aBlock:aBlock},$globals.Axolator)});
  245. //>>excludeEnd("ctx");
  246. },
  247. //>>excludeStart("ide", pragmas.excludeIdeData);
  248. args: ["anEavModel", "aBlock"],
  249. source: "model: anEavModel read: aBlock\x0a\x0aaBlock value: (anEavModel on: self) deepCopy",
  250. referencedClasses: [],
  251. //>>excludeEnd("ide");
  252. messageSends: ["value:", "deepCopy", "on:"]
  253. }),
  254. $globals.Axolator);
  255. $core.addMethod(
  256. $core.method({
  257. selector: "root",
  258. protocol: "accessing",
  259. fn: function (){
  260. var self=this,$self=this;
  261. return $self["@root"];
  262. },
  263. //>>excludeStart("ide", pragmas.excludeIdeData);
  264. args: [],
  265. source: "root\x0a\x0a^root",
  266. referencedClasses: [],
  267. //>>excludeEnd("ide");
  268. messageSends: []
  269. }),
  270. $globals.Axolator);
  271. $core.addMethod(
  272. $core.method({
  273. selector: "root:",
  274. protocol: "accessing",
  275. fn: function (anObject){
  276. var self=this,$self=this;
  277. $self["@root"]=anObject;
  278. return self;
  279. },
  280. //>>excludeStart("ide", pragmas.excludeIdeData);
  281. args: ["anObject"],
  282. source: "root: anObject\x0a\x0aroot := anObject",
  283. referencedClasses: [],
  284. //>>excludeEnd("ide");
  285. messageSends: []
  286. }),
  287. $globals.Axolator);
  288. $core.addMethod(
  289. $core.method({
  290. selector: "on:",
  291. protocol: "instance creation",
  292. fn: function (anObject){
  293. var self=this,$self=this;
  294. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  295. return $core.withContext(function($ctx1) {
  296. //>>excludeEnd("ctx");
  297. return $recv($self._new())._root_(anObject);
  298. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  299. }, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject},$globals.Axolator.a$cls)});
  300. //>>excludeEnd("ctx");
  301. },
  302. //>>excludeStart("ide", pragmas.excludeIdeData);
  303. args: ["anObject"],
  304. source: "on: anObject\x0a^self new root: anObject",
  305. referencedClasses: [],
  306. //>>excludeEnd("ide");
  307. messageSends: ["root:", "new"]
  308. }),
  309. $globals.Axolator.a$cls);
  310. $core.addClass("Axon", $globals.Object, ["factory"], "Axxord");
  311. //>>excludeStart("ide", pragmas.excludeIdeData);
  312. $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";
  313. //>>excludeEnd("ide");
  314. $core.addMethod(
  315. $core.method({
  316. selector: "addInterest:",
  317. protocol: "action",
  318. fn: function (anInterest){
  319. var self=this,$self=this;
  320. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  321. return $core.withContext(function($ctx1) {
  322. //>>excludeEnd("ctx");
  323. var $1;
  324. $recv(anInterest)._flag();
  325. $1=$recv(anInterest)._yourself();
  326. $self._add_($1);
  327. $self._dirty_(true);
  328. return self;
  329. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  330. }, function($ctx1) {$ctx1.fill(self,"addInterest:",{anInterest:anInterest},$globals.Axon)});
  331. //>>excludeEnd("ctx");
  332. },
  333. //>>excludeStart("ide", pragmas.excludeIdeData);
  334. args: ["anInterest"],
  335. source: "addInterest: anInterest\x0a\x09self\x0a\x09\x09add: (anInterest flag; yourself);\x0a\x09\x09dirty: true",
  336. referencedClasses: [],
  337. //>>excludeEnd("ide");
  338. messageSends: ["add:", "flag", "yourself", "dirty:"]
  339. }),
  340. $globals.Axon);
  341. $core.addMethod(
  342. $core.method({
  343. selector: "changed:",
  344. protocol: "action",
  345. fn: function (anAspect){
  346. var self=this,$self=this;
  347. var needsToRun;
  348. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  349. return $core.withContext(function($ctx1) {
  350. //>>excludeEnd("ctx");
  351. var $1;
  352. needsToRun=false;
  353. $self._do_((function(each){
  354. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  355. return $core.withContext(function($ctx2) {
  356. //>>excludeEnd("ctx");
  357. $1=$recv(each)._accepts_(anAspect);
  358. if($core.assert($1)){
  359. $recv(each)._flag();
  360. needsToRun=true;
  361. return needsToRun;
  362. }
  363. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  364. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  365. //>>excludeEnd("ctx");
  366. }));
  367. $self._dirty_(needsToRun);
  368. return self;
  369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  370. }, function($ctx1) {$ctx1.fill(self,"changed:",{anAspect:anAspect,needsToRun:needsToRun},$globals.Axon)});
  371. //>>excludeEnd("ctx");
  372. },
  373. //>>excludeStart("ide", pragmas.excludeIdeData);
  374. args: ["anAspect"],
  375. 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",
  376. referencedClasses: [],
  377. //>>excludeEnd("ide");
  378. messageSends: ["do:", "ifTrue:", "accepts:", "flag", "dirty:"]
  379. }),
  380. $globals.Axon);
  381. $core.addMethod(
  382. $core.method({
  383. selector: "changedAll",
  384. protocol: "action",
  385. fn: function (){
  386. var self=this,$self=this;
  387. var needsToRun;
  388. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  389. return $core.withContext(function($ctx1) {
  390. //>>excludeEnd("ctx");
  391. needsToRun=false;
  392. $self._do_((function(each){
  393. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  394. return $core.withContext(function($ctx2) {
  395. //>>excludeEnd("ctx");
  396. $recv(each)._flag();
  397. needsToRun=true;
  398. return needsToRun;
  399. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  400. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  401. //>>excludeEnd("ctx");
  402. }));
  403. $self._dirty_(needsToRun);
  404. return self;
  405. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  406. }, function($ctx1) {$ctx1.fill(self,"changedAll",{needsToRun:needsToRun},$globals.Axon)});
  407. //>>excludeEnd("ctx");
  408. },
  409. //>>excludeStart("ide", pragmas.excludeIdeData);
  410. args: [],
  411. source: "changedAll\x0a\x09| needsToRun |\x0a\x09needsToRun := false.\x0a\x09self do: [ :each |\x0a\x09\x09each flag.\x0a\x09\x09needsToRun := true ].\x0a\x09self dirty: needsToRun",
  412. referencedClasses: [],
  413. //>>excludeEnd("ide");
  414. messageSends: ["do:", "flag", "dirty:"]
  415. }),
  416. $globals.Axon);
  417. $core.addMethod(
  418. $core.method({
  419. selector: "dirty:",
  420. protocol: "action",
  421. fn: function (aBoolean){
  422. var self=this,$self=this;
  423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  424. return $core.withContext(function($ctx1) {
  425. //>>excludeEnd("ctx");
  426. if($core.assert(aBoolean)){
  427. $recv((function(){
  428. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  429. return $core.withContext(function($ctx2) {
  430. //>>excludeEnd("ctx");
  431. return $self._run();
  432. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  433. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  434. //>>excludeEnd("ctx");
  435. }))._fork();
  436. }
  437. return self;
  438. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  439. }, function($ctx1) {$ctx1.fill(self,"dirty:",{aBoolean:aBoolean},$globals.Axon)});
  440. //>>excludeEnd("ctx");
  441. },
  442. //>>excludeStart("ide", pragmas.excludeIdeData);
  443. args: ["aBoolean"],
  444. source: "dirty: aBoolean\x0a\x09aBoolean ifTrue: [[ self run ] fork]",
  445. referencedClasses: [],
  446. //>>excludeEnd("ide");
  447. messageSends: ["ifTrue:", "fork", "run"]
  448. }),
  449. $globals.Axon);
  450. $core.addMethod(
  451. $core.method({
  452. selector: "registerIn:",
  453. protocol: "injecting",
  454. fn: function (anObject){
  455. var self=this,$self=this;
  456. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  457. return $core.withContext(function($ctx1) {
  458. //>>excludeEnd("ctx");
  459. anObject.$axon$=self;
  460. return self;
  461. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  462. }, function($ctx1) {$ctx1.fill(self,"registerIn:",{anObject:anObject},$globals.Axon)});
  463. //>>excludeEnd("ctx");
  464. },
  465. //>>excludeStart("ide", pragmas.excludeIdeData);
  466. args: ["anObject"],
  467. source: "registerIn: anObject\x0a<inlineJS: 'anObject.$axon$=self'>",
  468. referencedClasses: [],
  469. //>>excludeEnd("ide");
  470. messageSends: []
  471. }),
  472. $globals.Axon);
  473. $core.addMethod(
  474. $core.method({
  475. selector: "run",
  476. protocol: "action",
  477. fn: function (){
  478. var self=this,$self=this;
  479. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  480. return $core.withContext(function($ctx1) {
  481. //>>excludeEnd("ctx");
  482. var $1,$2,$3;
  483. $recv((function(){
  484. var needsClean;
  485. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  486. return $core.withContext(function($ctx2) {
  487. //>>excludeEnd("ctx");
  488. needsClean=false;
  489. needsClean;
  490. $self._do_((function(each){
  491. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  492. return $core.withContext(function($ctx3) {
  493. //>>excludeEnd("ctx");
  494. $1=$recv(each)._isFlagged();
  495. if($core.assert($1)){
  496. $recv(each)._run();
  497. }
  498. $2=$recv(each)._isClosed();
  499. if($core.assert($2)){
  500. needsClean=true;
  501. return needsClean;
  502. }
  503. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  504. }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
  505. //>>excludeEnd("ctx");
  506. }));
  507. $3=needsClean;
  508. if($core.assert($3)){
  509. return $self._clean();
  510. }
  511. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  512. }, function($ctx2) {$ctx2.fillBlock({needsClean:needsClean},$ctx1,1)});
  513. //>>excludeEnd("ctx");
  514. }))._on_do_($globals.Error,(function(){
  515. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  516. return $core.withContext(function($ctx2) {
  517. //>>excludeEnd("ctx");
  518. return $self._dirty_(true);
  519. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  520. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
  521. //>>excludeEnd("ctx");
  522. }));
  523. return self;
  524. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  525. }, function($ctx1) {$ctx1.fill(self,"run",{},$globals.Axon)});
  526. //>>excludeEnd("ctx");
  527. },
  528. //>>excludeStart("ide", pragmas.excludeIdeData);
  529. args: [],
  530. 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 ]",
  531. referencedClasses: ["Error"],
  532. //>>excludeEnd("ide");
  533. messageSends: ["on:do:", "do:", "ifTrue:", "isFlagged", "run", "isClosed", "clean", "dirty:"]
  534. }),
  535. $globals.Axon);
  536. $core.addClass("DumbAxon", $globals.Axon, [], "Axxord");
  537. //>>excludeStart("ide", pragmas.excludeIdeData);
  538. $globals.DumbAxon.comment="I am an axon that does nothing.";
  539. //>>excludeEnd("ide");
  540. $core.addMethod(
  541. $core.method({
  542. selector: "add:",
  543. protocol: "as yet unclassified",
  544. fn: function (anInterest){
  545. var self=this,$self=this;
  546. return self;
  547. },
  548. //>>excludeStart("ide", pragmas.excludeIdeData);
  549. args: ["anInterest"],
  550. source: "add: anInterest\x0a\x09\x22pass\x22",
  551. referencedClasses: [],
  552. //>>excludeEnd("ide");
  553. messageSends: []
  554. }),
  555. $globals.DumbAxon);
  556. $core.addMethod(
  557. $core.method({
  558. selector: "clean",
  559. protocol: "as yet unclassified",
  560. fn: function (){
  561. var self=this,$self=this;
  562. return self;
  563. },
  564. //>>excludeStart("ide", pragmas.excludeIdeData);
  565. args: [],
  566. source: "clean\x0a\x09\x22pass\x22",
  567. referencedClasses: [],
  568. //>>excludeEnd("ide");
  569. messageSends: []
  570. }),
  571. $globals.DumbAxon);
  572. $core.addMethod(
  573. $core.method({
  574. selector: "do:",
  575. protocol: "as yet unclassified",
  576. fn: function (aBlock){
  577. var self=this,$self=this;
  578. return self;
  579. },
  580. //>>excludeStart("ide", pragmas.excludeIdeData);
  581. args: ["aBlock"],
  582. source: "do: aBlock\x0a\x09\x22pass\x22",
  583. referencedClasses: [],
  584. //>>excludeEnd("ide");
  585. messageSends: []
  586. }),
  587. $globals.DumbAxon);
  588. $core.addClass("SimpleAxon", $globals.Axon, ["queue"], "Axxord");
  589. $core.addMethod(
  590. $core.method({
  591. selector: "add:",
  592. protocol: "accessing",
  593. fn: function (aSubscription){
  594. var self=this,$self=this;
  595. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  596. return $core.withContext(function($ctx1) {
  597. //>>excludeEnd("ctx");
  598. $recv($self["@queue"])._add_(aSubscription);
  599. return self;
  600. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  601. }, function($ctx1) {$ctx1.fill(self,"add:",{aSubscription:aSubscription},$globals.SimpleAxon)});
  602. //>>excludeEnd("ctx");
  603. },
  604. //>>excludeStart("ide", pragmas.excludeIdeData);
  605. args: ["aSubscription"],
  606. source: "add: aSubscription\x0a\x09queue add: aSubscription.",
  607. referencedClasses: [],
  608. //>>excludeEnd("ide");
  609. messageSends: ["add:"]
  610. }),
  611. $globals.SimpleAxon);
  612. $core.addMethod(
  613. $core.method({
  614. selector: "clean",
  615. protocol: "bookkeeping",
  616. fn: function (){
  617. var self=this,$self=this;
  618. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  619. return $core.withContext(function($ctx1) {
  620. //>>excludeEnd("ctx");
  621. $self["@queue"]=$recv($self["@queue"])._reject_((function(each){
  622. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  623. return $core.withContext(function($ctx2) {
  624. //>>excludeEnd("ctx");
  625. return $recv(each)._isClosed();
  626. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  627. }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
  628. //>>excludeEnd("ctx");
  629. }));
  630. return self;
  631. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  632. }, function($ctx1) {$ctx1.fill(self,"clean",{},$globals.SimpleAxon)});
  633. //>>excludeEnd("ctx");
  634. },
  635. //>>excludeStart("ide", pragmas.excludeIdeData);
  636. args: [],
  637. source: "clean\x0a\x09queue := queue reject: [ :each | each isClosed ]",
  638. referencedClasses: [],
  639. //>>excludeEnd("ide");
  640. messageSends: ["reject:", "isClosed"]
  641. }),
  642. $globals.SimpleAxon);
  643. $core.addMethod(
  644. $core.method({
  645. selector: "do:",
  646. protocol: "enumeration",
  647. fn: function (aBlock){
  648. var self=this,$self=this;
  649. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  650. return $core.withContext(function($ctx1) {
  651. //>>excludeEnd("ctx");
  652. $recv($self["@queue"])._do_(aBlock);
  653. return self;
  654. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  655. }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock},$globals.SimpleAxon)});
  656. //>>excludeEnd("ctx");
  657. },
  658. //>>excludeStart("ide", pragmas.excludeIdeData);
  659. args: ["aBlock"],
  660. source: "do: aBlock\x0a\x09queue do: aBlock",
  661. referencedClasses: [],
  662. //>>excludeEnd("ide");
  663. messageSends: ["do:"]
  664. }),
  665. $globals.SimpleAxon);
  666. $core.addMethod(
  667. $core.method({
  668. selector: "initialize",
  669. protocol: "initialization",
  670. fn: function (){
  671. var self=this,$self=this;
  672. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  673. return $core.withContext(function($ctx1) {
  674. //>>excludeEnd("ctx");
  675. (
  676. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  677. $ctx1.supercall = true,
  678. //>>excludeEnd("ctx");
  679. ($globals.SimpleAxon.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, []));
  680. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  681. $ctx1.supercall = false;
  682. //>>excludeEnd("ctx");;
  683. $self["@queue"]=$recv($globals.OrderedCollection)._new();
  684. return self;
  685. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  686. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.SimpleAxon)});
  687. //>>excludeEnd("ctx");
  688. },
  689. //>>excludeStart("ide", pragmas.excludeIdeData);
  690. args: [],
  691. source: "initialize\x0a super initialize.\x0a\x09queue := OrderedCollection new",
  692. referencedClasses: ["OrderedCollection"],
  693. //>>excludeEnd("ide");
  694. messageSends: ["initialize", "new"]
  695. }),
  696. $globals.SimpleAxon);
  697. $core.addClass("AxonInterest", $globals.Object, ["flagged"], "Axxord");
  698. $core.addMethod(
  699. $core.method({
  700. selector: "accepts:",
  701. protocol: "testing",
  702. fn: function (anAspect){
  703. var self=this,$self=this;
  704. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  705. return $core.withContext(function($ctx1) {
  706. //>>excludeEnd("ctx");
  707. $self._subclassResponsibility();
  708. return self;
  709. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  710. }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.AxonInterest)});
  711. //>>excludeEnd("ctx");
  712. },
  713. //>>excludeStart("ide", pragmas.excludeIdeData);
  714. args: ["anAspect"],
  715. source: "accepts: anAspect\x0a \x22Should return true if change for anAspect is relevant for this AxonInterest\x22\x0a self subclassResponsibility",
  716. referencedClasses: [],
  717. //>>excludeEnd("ide");
  718. messageSends: ["subclassResponsibility"]
  719. }),
  720. $globals.AxonInterest);
  721. $core.addMethod(
  722. $core.method({
  723. selector: "close",
  724. protocol: "action",
  725. fn: function (){
  726. var self=this,$self=this;
  727. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  728. return $core.withContext(function($ctx1) {
  729. //>>excludeEnd("ctx");
  730. $self._subclassResponsibility();
  731. return self;
  732. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  733. }, function($ctx1) {$ctx1.fill(self,"close",{},$globals.AxonInterest)});
  734. //>>excludeEnd("ctx");
  735. },
  736. //>>excludeStart("ide", pragmas.excludeIdeData);
  737. args: [],
  738. source: "close\x0a\x09self subclassResponsibility",
  739. referencedClasses: [],
  740. //>>excludeEnd("ide");
  741. messageSends: ["subclassResponsibility"]
  742. }),
  743. $globals.AxonInterest);
  744. $core.addMethod(
  745. $core.method({
  746. selector: "enact",
  747. protocol: "action",
  748. fn: function (){
  749. var self=this,$self=this;
  750. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  751. return $core.withContext(function($ctx1) {
  752. //>>excludeEnd("ctx");
  753. $self._subclassResponsibility();
  754. return self;
  755. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  756. }, function($ctx1) {$ctx1.fill(self,"enact",{},$globals.AxonInterest)});
  757. //>>excludeEnd("ctx");
  758. },
  759. //>>excludeStart("ide", pragmas.excludeIdeData);
  760. args: [],
  761. source: "enact\x0a\x09self subclassResponsibility",
  762. referencedClasses: [],
  763. //>>excludeEnd("ide");
  764. messageSends: ["subclassResponsibility"]
  765. }),
  766. $globals.AxonInterest);
  767. $core.addMethod(
  768. $core.method({
  769. selector: "flag",
  770. protocol: "accessing",
  771. fn: function (){
  772. var self=this,$self=this;
  773. $self["@flagged"]=true;
  774. return self;
  775. },
  776. //>>excludeStart("ide", pragmas.excludeIdeData);
  777. args: [],
  778. source: "flag\x0a\x09flagged := true",
  779. referencedClasses: [],
  780. //>>excludeEnd("ide");
  781. messageSends: []
  782. }),
  783. $globals.AxonInterest);
  784. $core.addMethod(
  785. $core.method({
  786. selector: "initialize",
  787. protocol: "initialization",
  788. fn: function (){
  789. var self=this,$self=this;
  790. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  791. return $core.withContext(function($ctx1) {
  792. //>>excludeEnd("ctx");
  793. (
  794. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  795. $ctx1.supercall = true,
  796. //>>excludeEnd("ctx");
  797. ($globals.AxonInterest.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, []));
  798. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  799. $ctx1.supercall = false;
  800. //>>excludeEnd("ctx");;
  801. $self["@flagged"]=false;
  802. return self;
  803. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  804. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.AxonInterest)});
  805. //>>excludeEnd("ctx");
  806. },
  807. //>>excludeStart("ide", pragmas.excludeIdeData);
  808. args: [],
  809. source: "initialize\x0a\x09super initialize.\x0a flagged := false.",
  810. referencedClasses: [],
  811. //>>excludeEnd("ide");
  812. messageSends: ["initialize"]
  813. }),
  814. $globals.AxonInterest);
  815. $core.addMethod(
  816. $core.method({
  817. selector: "isClosed",
  818. protocol: "testing",
  819. fn: function (){
  820. var self=this,$self=this;
  821. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  822. return $core.withContext(function($ctx1) {
  823. //>>excludeEnd("ctx");
  824. $self._subclassResponsibility();
  825. return self;
  826. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  827. }, function($ctx1) {$ctx1.fill(self,"isClosed",{},$globals.AxonInterest)});
  828. //>>excludeEnd("ctx");
  829. },
  830. //>>excludeStart("ide", pragmas.excludeIdeData);
  831. args: [],
  832. source: "isClosed\x0a\x09self subclassResponsibility",
  833. referencedClasses: [],
  834. //>>excludeEnd("ide");
  835. messageSends: ["subclassResponsibility"]
  836. }),
  837. $globals.AxonInterest);
  838. $core.addMethod(
  839. $core.method({
  840. selector: "isFlagged",
  841. protocol: "testing",
  842. fn: function (){
  843. var self=this,$self=this;
  844. return $self["@flagged"];
  845. },
  846. //>>excludeStart("ide", pragmas.excludeIdeData);
  847. args: [],
  848. source: "isFlagged\x0a\x09^flagged",
  849. referencedClasses: [],
  850. //>>excludeEnd("ide");
  851. messageSends: []
  852. }),
  853. $globals.AxonInterest);
  854. $core.addMethod(
  855. $core.method({
  856. selector: "run",
  857. protocol: "action",
  858. fn: function (){
  859. var self=this,$self=this;
  860. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  861. return $core.withContext(function($ctx1) {
  862. //>>excludeEnd("ctx");
  863. $recv((function(){
  864. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  865. return $core.withContext(function($ctx2) {
  866. //>>excludeEnd("ctx");
  867. $self["@flagged"]=false;
  868. $self["@flagged"];
  869. return $self._enact();
  870. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  871. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  872. //>>excludeEnd("ctx");
  873. }))._on_do_($globals.AxonOff,(function(){
  874. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  875. return $core.withContext(function($ctx2) {
  876. //>>excludeEnd("ctx");
  877. return $self._close();
  878. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  879. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
  880. //>>excludeEnd("ctx");
  881. }));
  882. return self;
  883. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  884. }, function($ctx1) {$ctx1.fill(self,"run",{},$globals.AxonInterest)});
  885. //>>excludeEnd("ctx");
  886. },
  887. //>>excludeStart("ide", pragmas.excludeIdeData);
  888. args: [],
  889. source: "run\x0a\x09[ flagged := false. self enact ]\x0a on: AxonOff do: [ self close ]",
  890. referencedClasses: ["AxonOff"],
  891. //>>excludeEnd("ide");
  892. messageSends: ["on:do:", "enact", "close"]
  893. }),
  894. $globals.AxonInterest);
  895. $core.addClass("ConstantAspectPluggableEnactInterest", $globals.AxonInterest, ["aspect", "actionBlock"], "Axxord");
  896. $core.addMethod(
  897. $core.method({
  898. selector: "aspect:block:",
  899. protocol: "accessing",
  900. fn: function (anAspect,aBlock){
  901. var self=this,$self=this;
  902. $self["@aspect"]=anAspect;
  903. $self["@actionBlock"]=aBlock;
  904. return self;
  905. },
  906. //>>excludeStart("ide", pragmas.excludeIdeData);
  907. args: ["anAspect", "aBlock"],
  908. source: "aspect: anAspect block: aBlock\x0a\x09aspect := anAspect.\x0a actionBlock := aBlock",
  909. referencedClasses: [],
  910. //>>excludeEnd("ide");
  911. messageSends: []
  912. }),
  913. $globals.ConstantAspectPluggableEnactInterest);
  914. $core.addMethod(
  915. $core.method({
  916. selector: "close",
  917. protocol: "action",
  918. fn: function (){
  919. var self=this,$self=this;
  920. $self["@actionBlock"]=nil;
  921. return self;
  922. },
  923. //>>excludeStart("ide", pragmas.excludeIdeData);
  924. args: [],
  925. source: "close\x0a\x09actionBlock := nil",
  926. referencedClasses: [],
  927. //>>excludeEnd("ide");
  928. messageSends: []
  929. }),
  930. $globals.ConstantAspectPluggableEnactInterest);
  931. $core.addMethod(
  932. $core.method({
  933. selector: "enact",
  934. protocol: "action",
  935. fn: function (){
  936. var self=this,$self=this;
  937. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  938. return $core.withContext(function($ctx1) {
  939. //>>excludeEnd("ctx");
  940. $recv($self["@actionBlock"])._value();
  941. return self;
  942. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  943. }, function($ctx1) {$ctx1.fill(self,"enact",{},$globals.ConstantAspectPluggableEnactInterest)});
  944. //>>excludeEnd("ctx");
  945. },
  946. //>>excludeStart("ide", pragmas.excludeIdeData);
  947. args: [],
  948. source: "enact\x0a\x09actionBlock value",
  949. referencedClasses: [],
  950. //>>excludeEnd("ide");
  951. messageSends: ["value"]
  952. }),
  953. $globals.ConstantAspectPluggableEnactInterest);
  954. $core.addMethod(
  955. $core.method({
  956. selector: "initialize",
  957. protocol: "initialization",
  958. fn: function (){
  959. var self=this,$self=this;
  960. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  961. return $core.withContext(function($ctx1) {
  962. //>>excludeEnd("ctx");
  963. (
  964. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  965. $ctx1.supercall = true,
  966. //>>excludeEnd("ctx");
  967. ($globals.ConstantAspectPluggableEnactInterest.superclass||$boot.nilAsClass).fn.prototype._initialize.apply($self, []));
  968. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  969. $ctx1.supercall = false;
  970. //>>excludeEnd("ctx");;
  971. $self["@aspect"]=nil;
  972. $self["@actionBlock"]=nil;
  973. return self;
  974. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  975. }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.ConstantAspectPluggableEnactInterest)});
  976. //>>excludeEnd("ctx");
  977. },
  978. //>>excludeStart("ide", pragmas.excludeIdeData);
  979. args: [],
  980. source: "initialize\x0a\x09super initialize.\x0a aspect := nil.\x0a actionBlock := nil.",
  981. referencedClasses: [],
  982. //>>excludeEnd("ide");
  983. messageSends: ["initialize"]
  984. }),
  985. $globals.ConstantAspectPluggableEnactInterest);
  986. $core.addMethod(
  987. $core.method({
  988. selector: "isClosed",
  989. protocol: "testing",
  990. fn: function (){
  991. var self=this,$self=this;
  992. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  993. return $core.withContext(function($ctx1) {
  994. //>>excludeEnd("ctx");
  995. return $recv($self["@actionBlock"])._isNil();
  996. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  997. }, function($ctx1) {$ctx1.fill(self,"isClosed",{},$globals.ConstantAspectPluggableEnactInterest)});
  998. //>>excludeEnd("ctx");
  999. },
  1000. //>>excludeStart("ide", pragmas.excludeIdeData);
  1001. args: [],
  1002. source: "isClosed\x0a\x09^actionBlock isNil",
  1003. referencedClasses: [],
  1004. //>>excludeEnd("ide");
  1005. messageSends: ["isNil"]
  1006. }),
  1007. $globals.ConstantAspectPluggableEnactInterest);
  1008. $core.addClass("InterestedInEqual", $globals.ConstantAspectPluggableEnactInterest, [], "Axxord");
  1009. $core.addMethod(
  1010. $core.method({
  1011. selector: "accepts:",
  1012. protocol: "testing",
  1013. fn: function (anAspect){
  1014. var self=this,$self=this;
  1015. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1016. return $core.withContext(function($ctx1) {
  1017. //>>excludeEnd("ctx");
  1018. return $recv(anAspect).__eq($self["@aspect"]);
  1019. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1020. }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.InterestedInEqual)});
  1021. //>>excludeEnd("ctx");
  1022. },
  1023. //>>excludeStart("ide", pragmas.excludeIdeData);
  1024. args: ["anAspect"],
  1025. source: "accepts: anAspect\x0a ^ anAspect = aspect",
  1026. referencedClasses: [],
  1027. //>>excludeEnd("ide");
  1028. messageSends: ["="]
  1029. }),
  1030. $globals.InterestedInEqual);
  1031. $core.addClass("InterestedThruAxes", $globals.ConstantAspectPluggableEnactInterest, [], "Axxord");
  1032. $core.addMethod(
  1033. $core.method({
  1034. selector: "accepts:",
  1035. protocol: "testing",
  1036. fn: function (anAspect){
  1037. var self=this,$self=this;
  1038. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1039. return $core.withContext(function($ctx1) {
  1040. //>>excludeEnd("ctx");
  1041. var $2,$3,$1,$5,$6,$4;
  1042. $2=$recv(anAspect)._size();
  1043. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1044. $ctx1.sendIdx["size"]=1;
  1045. //>>excludeEnd("ctx");
  1046. $3=$recv($self["@aspect"])._size();
  1047. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1048. $ctx1.sendIdx["size"]=2;
  1049. //>>excludeEnd("ctx");
  1050. $1=$recv($2).__lt_eq($3);
  1051. if($core.assert($1)){
  1052. $5=$self["@aspect"];
  1053. $6=$recv(anAspect)._size();
  1054. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1055. $ctx1.sendIdx["size"]=3;
  1056. //>>excludeEnd("ctx");
  1057. $4=$recv($5)._copyFrom_to_((1),$6);
  1058. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1059. $ctx1.sendIdx["copyFrom:to:"]=1;
  1060. //>>excludeEnd("ctx");
  1061. return $recv(anAspect).__eq($4);
  1062. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1063. $ctx1.sendIdx["="]=1;
  1064. //>>excludeEnd("ctx");
  1065. } else {
  1066. return $recv($self["@aspect"]).__eq($recv(anAspect)._copyFrom_to_((1),$recv($self["@aspect"])._size()));
  1067. }
  1068. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1069. }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.InterestedThruAxes)});
  1070. //>>excludeEnd("ctx");
  1071. },
  1072. //>>excludeStart("ide", pragmas.excludeIdeData);
  1073. args: ["anAspect"],
  1074. source: "accepts: anAspect\x0a ^anAspect size <= aspect size\x0a\x09\x09ifTrue: [anAspect = (aspect copyFrom: 1 to: anAspect size)]\x0a\x09\x09ifFalse: [aspect = (anAspect copyFrom: 1 to: aspect size)]",
  1075. referencedClasses: [],
  1076. //>>excludeEnd("ide");
  1077. messageSends: ["ifTrue:ifFalse:", "<=", "size", "=", "copyFrom:to:"]
  1078. }),
  1079. $globals.InterestedThruAxes);
  1080. $core.addClass("InterestedUpToAxes", $globals.ConstantAspectPluggableEnactInterest, [], "Axxord");
  1081. $core.addMethod(
  1082. $core.method({
  1083. selector: "accepts:",
  1084. protocol: "testing",
  1085. fn: function (anAspect){
  1086. var self=this,$self=this;
  1087. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1088. return $core.withContext(function($ctx1) {
  1089. //>>excludeEnd("ctx");
  1090. var $2,$3,$1;
  1091. $2=$recv(anAspect)._size();
  1092. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1093. $ctx1.sendIdx["size"]=1;
  1094. //>>excludeEnd("ctx");
  1095. $3=$recv($self["@aspect"])._size();
  1096. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1097. $ctx1.sendIdx["size"]=2;
  1098. //>>excludeEnd("ctx");
  1099. $1=$recv($2).__lt_eq($3);
  1100. return $recv($1)._and_((function(){
  1101. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1102. return $core.withContext(function($ctx2) {
  1103. //>>excludeEnd("ctx");
  1104. return $recv(anAspect).__eq($recv($self["@aspect"])._copyFrom_to_((1),$recv(anAspect)._size()));
  1105. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1106. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1107. //>>excludeEnd("ctx");
  1108. }));
  1109. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1110. }, function($ctx1) {$ctx1.fill(self,"accepts:",{anAspect:anAspect},$globals.InterestedUpToAxes)});
  1111. //>>excludeEnd("ctx");
  1112. },
  1113. //>>excludeStart("ide", pragmas.excludeIdeData);
  1114. args: ["anAspect"],
  1115. source: "accepts: anAspect\x0a ^anAspect size <= aspect size and: [anAspect = (aspect copyFrom: 1 to: anAspect size)]",
  1116. referencedClasses: [],
  1117. //>>excludeEnd("ide");
  1118. messageSends: ["and:", "<=", "size", "=", "copyFrom:to:"]
  1119. }),
  1120. $globals.InterestedUpToAxes);
  1121. $core.addClass("AxonOff", $globals.Error, [], "Axxord");
  1122. //>>excludeStart("ide", pragmas.excludeIdeData);
  1123. $globals.AxonOff.comment="Signal me from the subscription block to unsubscribe it.";
  1124. //>>excludeEnd("ide");
  1125. $core.addMethod(
  1126. $core.method({
  1127. selector: "asAxisIn:ifAbsent:",
  1128. protocol: "*Axxord",
  1129. fn: function (anObject,aBlock){
  1130. var self=this,$self=this;
  1131. var receiver,selector,result;
  1132. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1133. return $core.withContext(function($ctx1) {
  1134. //>>excludeEnd("ctx");
  1135. var $5,$4,$3,$2,$1;
  1136. var $early={};
  1137. try {
  1138. selector=$self._first();
  1139. receiver=$recv(anObject)._yourself();
  1140. $recv((function(){
  1141. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1142. return $core.withContext(function($ctx2) {
  1143. //>>excludeEnd("ctx");
  1144. result=$recv(receiver)._perform_(selector);
  1145. return result;
  1146. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1147. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1148. //>>excludeEnd("ctx");
  1149. }))._on_do_($globals.MessageNotUnderstood,(function(mnu){
  1150. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1151. return $core.withContext(function($ctx2) {
  1152. //>>excludeEnd("ctx");
  1153. $5=$recv(mnu)._message();
  1154. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1155. $ctx2.sendIdx["message"]=1;
  1156. //>>excludeEnd("ctx");
  1157. $4=$recv($5)._selector();
  1158. $3=$recv($4).__eq(selector);
  1159. $2=$recv($3)._and_((function(){
  1160. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1161. return $core.withContext(function($ctx3) {
  1162. //>>excludeEnd("ctx");
  1163. return $recv($recv(mnu)._receiver()).__eq_eq(receiver);
  1164. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1165. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  1166. //>>excludeEnd("ctx");
  1167. }));
  1168. $1=$recv($2)._and_((function(){
  1169. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1170. return $core.withContext(function($ctx3) {
  1171. //>>excludeEnd("ctx");
  1172. return $recv($recv($recv(mnu)._message())._arguments())._isEmpty();
  1173. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1174. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  1175. //>>excludeEnd("ctx");
  1176. }));
  1177. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1178. $ctx2.sendIdx["and:"]=1;
  1179. //>>excludeEnd("ctx");
  1180. if(!$core.assert($1)){
  1181. $recv(mnu)._resignal();
  1182. }
  1183. throw $early=[$recv(aBlock)._value()];
  1184. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1185. }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)});
  1186. //>>excludeEnd("ctx");
  1187. }));
  1188. return result;
  1189. }
  1190. catch(e) {if(e===$early)return e[0]; throw e}
  1191. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1192. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock,receiver:receiver,selector:selector,result:result},$globals.Array)});
  1193. //>>excludeEnd("ctx");
  1194. },
  1195. //>>excludeStart("ide", pragmas.excludeIdeData);
  1196. args: ["anObject", "aBlock"],
  1197. 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",
  1198. referencedClasses: ["MessageNotUnderstood"],
  1199. //>>excludeEnd("ide");
  1200. messageSends: ["first", "yourself", "on:do:", "perform:", "ifFalse:", "and:", "=", "selector", "message", "==", "receiver", "isEmpty", "arguments", "resignal", "value"]
  1201. }),
  1202. $globals.Array);
  1203. $core.addMethod(
  1204. $core.method({
  1205. selector: "asAxisIn:ifAbsent:put:",
  1206. protocol: "*Axxord",
  1207. fn: function (anObject,aBlock,anotherObject){
  1208. var self=this,$self=this;
  1209. var receiver,selector,arguments_,result;
  1210. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1211. return $core.withContext(function($ctx1) {
  1212. //>>excludeEnd("ctx");
  1213. var $5,$4,$3,$2,$1;
  1214. var $early={};
  1215. try {
  1216. selector=$recv($self._first())._asMutator();
  1217. receiver=$recv(anObject)._yourself();
  1218. arguments_=[anotherObject];
  1219. $recv((function(){
  1220. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1221. return $core.withContext(function($ctx2) {
  1222. //>>excludeEnd("ctx");
  1223. result=$recv(receiver)._perform_withArguments_(selector,arguments_);
  1224. return result;
  1225. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1226. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1227. //>>excludeEnd("ctx");
  1228. }))._on_do_($globals.MessageNotUnderstood,(function(mnu){
  1229. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1230. return $core.withContext(function($ctx2) {
  1231. //>>excludeEnd("ctx");
  1232. $5=$recv(mnu)._message();
  1233. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1234. $ctx2.sendIdx["message"]=1;
  1235. //>>excludeEnd("ctx");
  1236. $4=$recv($5)._selector();
  1237. $3=$recv($4).__eq(selector);
  1238. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1239. $ctx2.sendIdx["="]=1;
  1240. //>>excludeEnd("ctx");
  1241. $2=$recv($3)._and_((function(){
  1242. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1243. return $core.withContext(function($ctx3) {
  1244. //>>excludeEnd("ctx");
  1245. return $recv($recv(mnu)._receiver()).__eq_eq(receiver);
  1246. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1247. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
  1248. //>>excludeEnd("ctx");
  1249. }));
  1250. $1=$recv($2)._and_((function(){
  1251. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1252. return $core.withContext(function($ctx3) {
  1253. //>>excludeEnd("ctx");
  1254. return $recv($recv($recv(mnu)._message())._arguments()).__eq(arguments_);
  1255. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1256. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
  1257. //>>excludeEnd("ctx");
  1258. }));
  1259. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1260. $ctx2.sendIdx["and:"]=1;
  1261. //>>excludeEnd("ctx");
  1262. if(!$core.assert($1)){
  1263. $recv(mnu)._resignal();
  1264. }
  1265. throw $early=[$recv(aBlock)._value()];
  1266. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1267. }, function($ctx2) {$ctx2.fillBlock({mnu:mnu},$ctx1,2)});
  1268. //>>excludeEnd("ctx");
  1269. }));
  1270. return result;
  1271. }
  1272. catch(e) {if(e===$early)return e[0]; throw e}
  1273. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1274. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject,receiver:receiver,selector:selector,arguments_:arguments_,result:result},$globals.Array)});
  1275. //>>excludeEnd("ctx");
  1276. },
  1277. //>>excludeStart("ide", pragmas.excludeIdeData);
  1278. args: ["anObject", "aBlock", "anotherObject"],
  1279. 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",
  1280. referencedClasses: ["MessageNotUnderstood"],
  1281. //>>excludeEnd("ide");
  1282. messageSends: ["asMutator", "first", "yourself", "on:do:", "perform:withArguments:", "ifFalse:", "and:", "=", "selector", "message", "==", "receiver", "arguments", "resignal", "value"]
  1283. }),
  1284. $globals.Array);
  1285. $core.addMethod(
  1286. $core.method({
  1287. selector: "asAxisIn:ifAbsent:",
  1288. protocol: "*Axxord",
  1289. fn: function (anObject,aBlock){
  1290. var self=this,$self=this;
  1291. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1292. return $core.withContext(function($ctx1) {
  1293. //>>excludeEnd("ctx");
  1294. var $1;
  1295. var $early={};
  1296. try {
  1297. $1=$recv(anObject)._respondsTo_("at:ifAbsent:");
  1298. $recv($1)._ifTrue_ifFalse_((function(){
  1299. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1300. return $core.withContext(function($ctx2) {
  1301. //>>excludeEnd("ctx");
  1302. throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)];
  1303. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1304. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1305. //>>excludeEnd("ctx");
  1306. }),aBlock);
  1307. return self;
  1308. }
  1309. catch(e) {if(e===$early)return e[0]; throw e}
  1310. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1311. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Number)});
  1312. //>>excludeEnd("ctx");
  1313. },
  1314. //>>excludeStart("ide", pragmas.excludeIdeData);
  1315. args: ["anObject", "aBlock"],
  1316. source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09(anObject respondsTo: #at:ifAbsent:)\x0a\x09\x09ifTrue: [ ^ anObject at: self ifAbsent: aBlock ]\x0a\x09\x09ifFalse: aBlock",
  1317. referencedClasses: [],
  1318. //>>excludeEnd("ide");
  1319. messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:ifAbsent:"]
  1320. }),
  1321. $globals.Number);
  1322. $core.addMethod(
  1323. $core.method({
  1324. selector: "asAxisIn:ifAbsent:put:",
  1325. protocol: "*Axxord",
  1326. fn: function (anObject,aBlock,anotherObject){
  1327. var self=this,$self=this;
  1328. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1329. return $core.withContext(function($ctx1) {
  1330. //>>excludeEnd("ctx");
  1331. var $1;
  1332. var $early={};
  1333. try {
  1334. $1=$recv(anObject)._respondsTo_("at:put:");
  1335. $recv($1)._ifTrue_ifFalse_((function(){
  1336. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1337. return $core.withContext(function($ctx2) {
  1338. //>>excludeEnd("ctx");
  1339. throw $early=[$recv(anObject)._at_put_(self,anotherObject)];
  1340. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1341. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1342. //>>excludeEnd("ctx");
  1343. }),aBlock);
  1344. return self;
  1345. }
  1346. catch(e) {if(e===$early)return e[0]; throw e}
  1347. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1348. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.Number)});
  1349. //>>excludeEnd("ctx");
  1350. },
  1351. //>>excludeStart("ide", pragmas.excludeIdeData);
  1352. args: ["anObject", "aBlock", "anotherObject"],
  1353. 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",
  1354. referencedClasses: [],
  1355. //>>excludeEnd("ide");
  1356. messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:put:"]
  1357. }),
  1358. $globals.Number);
  1359. $core.addMethod(
  1360. $core.method({
  1361. selector: "asAxisIn:ifAbsent:",
  1362. protocol: "*Axxord",
  1363. fn: function (anObject,aBlock){
  1364. var self=this,$self=this;
  1365. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1366. return $core.withContext(function($ctx1) {
  1367. //>>excludeEnd("ctx");
  1368. return $recv(aBlock)._value();
  1369. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1370. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.Object)});
  1371. //>>excludeEnd("ctx");
  1372. },
  1373. //>>excludeStart("ide", pragmas.excludeIdeData);
  1374. args: ["anObject", "aBlock"],
  1375. source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09^ aBlock value",
  1376. referencedClasses: [],
  1377. //>>excludeEnd("ide");
  1378. messageSends: ["value"]
  1379. }),
  1380. $globals.Object);
  1381. $core.addMethod(
  1382. $core.method({
  1383. selector: "asAxisIn:ifAbsent:put:",
  1384. protocol: "*Axxord",
  1385. fn: function (anObject,aBlock,anotherObject){
  1386. var self=this,$self=this;
  1387. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1388. return $core.withContext(function($ctx1) {
  1389. //>>excludeEnd("ctx");
  1390. return $recv(aBlock)._value();
  1391. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1392. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.Object)});
  1393. //>>excludeEnd("ctx");
  1394. },
  1395. //>>excludeStart("ide", pragmas.excludeIdeData);
  1396. args: ["anObject", "aBlock", "anotherObject"],
  1397. source: "asAxisIn: anObject ifAbsent: aBlock put: anotherObject\x0a\x09^ aBlock value",
  1398. referencedClasses: [],
  1399. //>>excludeEnd("ide");
  1400. messageSends: ["value"]
  1401. }),
  1402. $globals.Object);
  1403. $core.addMethod(
  1404. $core.method({
  1405. selector: "atAxes:ifAbsent:",
  1406. protocol: "*Axxord",
  1407. fn: function (aCollection,aBlock){
  1408. var self=this,$self=this;
  1409. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1410. return $core.withContext(function($ctx1) {
  1411. //>>excludeEnd("ctx");
  1412. var $early={};
  1413. try {
  1414. return $recv(aCollection)._inject_into_(self,(function(soFar,segment){
  1415. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1416. return $core.withContext(function($ctx2) {
  1417. //>>excludeEnd("ctx");
  1418. return $recv(segment)._asAxisIn_ifAbsent_(soFar,(function(){
  1419. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1420. return $core.withContext(function($ctx3) {
  1421. //>>excludeEnd("ctx");
  1422. throw $early=[$recv(aBlock)._value()];
  1423. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1424. }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
  1425. //>>excludeEnd("ctx");
  1426. }));
  1427. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1428. }, function($ctx2) {$ctx2.fillBlock({soFar:soFar,segment:segment},$ctx1,1)});
  1429. //>>excludeEnd("ctx");
  1430. }));
  1431. }
  1432. catch(e) {if(e===$early)return e[0]; throw e}
  1433. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1434. }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:",{aCollection:aCollection,aBlock:aBlock},$globals.Object)});
  1435. //>>excludeEnd("ctx");
  1436. },
  1437. //>>excludeStart("ide", pragmas.excludeIdeData);
  1438. args: ["aCollection", "aBlock"],
  1439. source: "atAxes: aCollection ifAbsent: aBlock\x0a\x09^ aCollection inject: self into: [ :soFar :segment |\x0a\x09\x09segment asAxisIn: soFar ifAbsent: [ ^ aBlock value ]]",
  1440. referencedClasses: [],
  1441. //>>excludeEnd("ide");
  1442. messageSends: ["inject:into:", "asAxisIn:ifAbsent:", "value"]
  1443. }),
  1444. $globals.Object);
  1445. $core.addMethod(
  1446. $core.method({
  1447. selector: "atAxes:ifAbsent:put:",
  1448. protocol: "*Axxord",
  1449. fn: function (aCollection,aBlock,value){
  1450. var self=this,$self=this;
  1451. var penultimate;
  1452. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1453. return $core.withContext(function($ctx1) {
  1454. //>>excludeEnd("ctx");
  1455. penultimate=$self._atAxes_ifAbsent_($recv(aCollection)._allButLast(),aBlock);
  1456. return $recv($recv(aCollection)._last())._asAxisIn_ifAbsent_put_(penultimate,aBlock,value);
  1457. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1458. }, function($ctx1) {$ctx1.fill(self,"atAxes:ifAbsent:put:",{aCollection:aCollection,aBlock:aBlock,value:value,penultimate:penultimate},$globals.Object)});
  1459. //>>excludeEnd("ctx");
  1460. },
  1461. //>>excludeStart("ide", pragmas.excludeIdeData);
  1462. args: ["aCollection", "aBlock", "value"],
  1463. 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",
  1464. referencedClasses: [],
  1465. //>>excludeEnd("ide");
  1466. messageSends: ["atAxes:ifAbsent:", "allButLast", "asAxisIn:ifAbsent:put:", "last"]
  1467. }),
  1468. $globals.Object);
  1469. $core.addMethod(
  1470. $core.method({
  1471. selector: "axes:consume:",
  1472. protocol: "*Axxord",
  1473. fn: function (aCollection,aBlock){
  1474. var self=this,$self=this;
  1475. var value;
  1476. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1477. return $core.withContext(function($ctx1) {
  1478. //>>excludeEnd("ctx");
  1479. var $early={};
  1480. try {
  1481. value=$self._atAxes_ifAbsent_(aCollection,(function(){
  1482. throw $early=[self];
  1483. }));
  1484. return $recv(aBlock)._value_(value);
  1485. }
  1486. catch(e) {if(e===$early)return e[0]; throw e}
  1487. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1488. }, function($ctx1) {$ctx1.fill(self,"axes:consume:",{aCollection:aCollection,aBlock:aBlock,value:value},$globals.Object)});
  1489. //>>excludeEnd("ctx");
  1490. },
  1491. //>>excludeStart("ide", pragmas.excludeIdeData);
  1492. args: ["aCollection", "aBlock"],
  1493. source: "axes: aCollection consume: aBlock\x0a\x09| value |\x0a\x09value := self atAxes: aCollection ifAbsent: [ ^self ].\x0a\x09^ aBlock value: value",
  1494. referencedClasses: [],
  1495. //>>excludeEnd("ide");
  1496. messageSends: ["atAxes:ifAbsent:", "value:"]
  1497. }),
  1498. $globals.Object);
  1499. $core.addMethod(
  1500. $core.method({
  1501. selector: "axes:transform:",
  1502. protocol: "*Axxord",
  1503. fn: function (aCollection,aBlock){
  1504. var self=this,$self=this;
  1505. var value,newValue;
  1506. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1507. return $core.withContext(function($ctx1) {
  1508. //>>excludeEnd("ctx");
  1509. var $1,$2,$receiver;
  1510. var $early={};
  1511. try {
  1512. value=$self._atAxes_ifAbsent_(aCollection,(function(){
  1513. throw $early=[self];
  1514. }));
  1515. newValue=$recv(aBlock)._value_(value);
  1516. $1=$recv(value).__eq_eq(newValue);
  1517. if(!$core.assert($1)){
  1518. $self._atAxes_ifAbsent_put_(aCollection,(function(){
  1519. throw $early=[self];
  1520. }),newValue);
  1521. }
  1522. $2=$self._registeredAxon();
  1523. if(($receiver = $2) == null || $receiver.a$nil){
  1524. $2;
  1525. } else {
  1526. var axon;
  1527. axon=$receiver;
  1528. $recv(axon)._changed_(aCollection);
  1529. }
  1530. return self;
  1531. }
  1532. catch(e) {if(e===$early)return e[0]; throw e}
  1533. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1534. }, function($ctx1) {$ctx1.fill(self,"axes:transform:",{aCollection:aCollection,aBlock:aBlock,value:value,newValue:newValue},$globals.Object)});
  1535. //>>excludeEnd("ctx");
  1536. },
  1537. //>>excludeStart("ide", pragmas.excludeIdeData);
  1538. args: ["aCollection", "aBlock"],
  1539. 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 registeredAxon ifNotNil: [:axon | axon changed: aCollection]",
  1540. referencedClasses: [],
  1541. //>>excludeEnd("ide");
  1542. messageSends: ["atAxes:ifAbsent:", "value:", "ifFalse:", "==", "atAxes:ifAbsent:put:", "ifNotNil:", "registeredAxon", "changed:"]
  1543. }),
  1544. $globals.Object);
  1545. $core.addMethod(
  1546. $core.method({
  1547. selector: "registeredAxon",
  1548. protocol: "*Axxord",
  1549. fn: function (){
  1550. var self=this,$self=this;
  1551. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1552. return $core.withContext(function($ctx1) {
  1553. //>>excludeEnd("ctx");
  1554. return self.$axon$;
  1555. return self;
  1556. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1557. }, function($ctx1) {$ctx1.fill(self,"registeredAxon",{},$globals.Object)});
  1558. //>>excludeEnd("ctx");
  1559. },
  1560. //>>excludeStart("ide", pragmas.excludeIdeData);
  1561. args: [],
  1562. source: "registeredAxon\x0a<inlineJS: 'return self.$axon$'>",
  1563. referencedClasses: [],
  1564. //>>excludeEnd("ide");
  1565. messageSends: []
  1566. }),
  1567. $globals.Object);
  1568. $core.addMethod(
  1569. $core.method({
  1570. selector: "asAxisIn:ifAbsent:",
  1571. protocol: "*Axxord",
  1572. fn: function (anObject,aBlock){
  1573. var self=this,$self=this;
  1574. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1575. return $core.withContext(function($ctx1) {
  1576. //>>excludeEnd("ctx");
  1577. var $1;
  1578. var $early={};
  1579. try {
  1580. $1=$recv(anObject)._respondsTo_("at:ifAbsent:");
  1581. $recv($1)._ifTrue_ifFalse_((function(){
  1582. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1583. return $core.withContext(function($ctx2) {
  1584. //>>excludeEnd("ctx");
  1585. throw $early=[$recv(anObject)._at_ifAbsent_(self,aBlock)];
  1586. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1587. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1588. //>>excludeEnd("ctx");
  1589. }),aBlock);
  1590. return self;
  1591. }
  1592. catch(e) {if(e===$early)return e[0]; throw e}
  1593. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1594. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:",{anObject:anObject,aBlock:aBlock},$globals.String)});
  1595. //>>excludeEnd("ctx");
  1596. },
  1597. //>>excludeStart("ide", pragmas.excludeIdeData);
  1598. args: ["anObject", "aBlock"],
  1599. source: "asAxisIn: anObject ifAbsent: aBlock\x0a\x09(anObject respondsTo: #at:ifAbsent:)\x0a\x09\x09ifTrue: [ ^ anObject at: self ifAbsent: aBlock ]\x0a\x09\x09ifFalse: aBlock",
  1600. referencedClasses: [],
  1601. //>>excludeEnd("ide");
  1602. messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:ifAbsent:"]
  1603. }),
  1604. $globals.String);
  1605. $core.addMethod(
  1606. $core.method({
  1607. selector: "asAxisIn:ifAbsent:put:",
  1608. protocol: "*Axxord",
  1609. fn: function (anObject,aBlock,anotherObject){
  1610. var self=this,$self=this;
  1611. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1612. return $core.withContext(function($ctx1) {
  1613. //>>excludeEnd("ctx");
  1614. var $1;
  1615. var $early={};
  1616. try {
  1617. $1=$recv(anObject)._respondsTo_("at:put:");
  1618. $recv($1)._ifTrue_ifFalse_((function(){
  1619. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1620. return $core.withContext(function($ctx2) {
  1621. //>>excludeEnd("ctx");
  1622. throw $early=[$recv(anObject)._at_put_(self,anotherObject)];
  1623. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1624. }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
  1625. //>>excludeEnd("ctx");
  1626. }),aBlock);
  1627. return self;
  1628. }
  1629. catch(e) {if(e===$early)return e[0]; throw e}
  1630. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  1631. }, function($ctx1) {$ctx1.fill(self,"asAxisIn:ifAbsent:put:",{anObject:anObject,aBlock:aBlock,anotherObject:anotherObject},$globals.String)});
  1632. //>>excludeEnd("ctx");
  1633. },
  1634. //>>excludeStart("ide", pragmas.excludeIdeData);
  1635. args: ["anObject", "aBlock", "anotherObject"],
  1636. 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",
  1637. referencedClasses: [],
  1638. //>>excludeEnd("ide");
  1639. messageSends: ["ifTrue:ifFalse:", "respondsTo:", "at:put:"]
  1640. }),
  1641. $globals.String);
  1642. });