Axon.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. define(["amber/boot", "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("Axon");
  7. $core.packages["Axon"].innerEval = function (expr) { return eval(expr); };
  8. $core.packages["Axon"].transport = {"type":"amd","amdNamespace":"axon"};
  9. $core.addClass("AxonizedObject", $globals.Object, ["axon"], "Axon");
  10. //>>excludeStart("ide", pragmas.excludeIdeData);
  11. $globals.AxonizedObject.comment="I am base class for object using Axon changed:\x0afor event / change logistics,\x0a\x0aSet Axon instance with `axon:` and then use\x0a`self changed: anAspect` to trigger axon's `changed:`.";
  12. //>>excludeEnd("ide");
  13. $core.addMethod(
  14. $core.method({
  15. selector: "axon",
  16. protocol: "accessing",
  17. fn: function (){
  18. var self=this,$self=this;
  19. return $self["@axon"];
  20. },
  21. //>>excludeStart("ide", pragmas.excludeIdeData);
  22. args: [],
  23. source: "axon\x0a\x09^ axon",
  24. referencedClasses: [],
  25. //>>excludeEnd("ide");
  26. messageSends: []
  27. }),
  28. $globals.AxonizedObject);
  29. $core.addMethod(
  30. $core.method({
  31. selector: "axon:",
  32. protocol: "accessing",
  33. fn: function (anAxon){
  34. var self=this,$self=this;
  35. $self["@axon"]=anAxon;
  36. return self;
  37. },
  38. //>>excludeStart("ide", pragmas.excludeIdeData);
  39. args: ["anAxon"],
  40. source: "axon: anAxon\x0a\x09axon := anAxon",
  41. referencedClasses: [],
  42. //>>excludeEnd("ide");
  43. messageSends: []
  44. }),
  45. $globals.AxonizedObject);
  46. $core.addMethod(
  47. $core.method({
  48. selector: "changed:",
  49. protocol: "action",
  50. fn: function (anAspect){
  51. var self=this,$self=this;
  52. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  53. return $core.withContext(function($ctx1) {
  54. //>>excludeEnd("ctx");
  55. $recv($self._axon())._changed_(anAspect);
  56. return self;
  57. //>>excludeStart("ctx", pragmas.excludeDebugContexts);
  58. }, function($ctx1) {$ctx1.fill(self,"changed:",{anAspect:anAspect},$globals.AxonizedObject)});
  59. //>>excludeEnd("ctx");
  60. },
  61. //>>excludeStart("ide", pragmas.excludeIdeData);
  62. args: ["anAspect"],
  63. source: "changed: anAspect\x0a\x09self axon changed: anAspect",
  64. referencedClasses: [],
  65. //>>excludeEnd("ide");
  66. messageSends: ["changed:", "axon"]
  67. }),
  68. $globals.AxonizedObject);
  69. });