Trapped-Frontend.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. smalltalk.addPackage('Trapped-Frontend', {});
  2. smalltalk.addClass('TrappedSingleton', smalltalk.Object, [], 'Trapped-Frontend');
  3. smalltalk.addMethod(
  4. "_start",
  5. smalltalk.method({
  6. selector: "start",
  7. category: 'action',
  8. fn: function (){
  9. var self=this;
  10. var $1;
  11. $1=smalltalk.send(self,"_subclassResponsibility",[]);
  12. return $1;
  13. },
  14. args: [],
  15. source: "start\x0a\x09^ self subclassResponsibility",
  16. messageSends: ["subclassResponsibility"],
  17. referencedClasses: []
  18. }),
  19. smalltalk.TrappedSingleton);
  20. smalltalk.TrappedSingleton.klass.iVarNames = ['current'];
  21. smalltalk.addMethod(
  22. "_current",
  23. smalltalk.method({
  24. selector: "current",
  25. category: 'accessing',
  26. fn: function (){
  27. var self=this;
  28. var $1;
  29. if(($receiver = self["@current"]) == nil || $receiver == undefined){
  30. self["@current"]=smalltalk.send(self,"_new",[]);
  31. $1=self["@current"];
  32. } else {
  33. $1=self["@current"];
  34. };
  35. return $1;
  36. },
  37. args: [],
  38. source: "current\x0a\x09^ current ifNil: [ current := self new ]",
  39. messageSends: ["ifNil:", "new"],
  40. referencedClasses: []
  41. }),
  42. smalltalk.TrappedSingleton.klass);
  43. smalltalk.addMethod(
  44. "_start",
  45. smalltalk.method({
  46. selector: "start",
  47. category: 'action',
  48. fn: function (){
  49. var self=this;
  50. smalltalk.send(smalltalk.send(self,"_current",[]),"_start",[]);
  51. return self},
  52. args: [],
  53. source: "start\x0a\x09self current start",
  54. messageSends: ["start", "current"],
  55. referencedClasses: []
  56. }),
  57. smalltalk.TrappedSingleton.klass);
  58. smalltalk.addClass('Trapped', smalltalk.TrappedSingleton, ['registry'], 'Trapped-Frontend');
  59. smalltalk.addMethod(
  60. "_byName_",
  61. smalltalk.method({
  62. selector: "byName:",
  63. category: 'accessing',
  64. fn: function (aString){
  65. var self=this;
  66. var $1;
  67. $1=smalltalk.send(self["@registry"],"_at_",[aString]);
  68. return $1;
  69. },
  70. args: ["aString"],
  71. source: "byName: aString\x0a\x09^ registry at: aString",
  72. messageSends: ["at:"],
  73. referencedClasses: []
  74. }),
  75. smalltalk.Trapped);
  76. smalltalk.addMethod(
  77. "_initialize",
  78. smalltalk.method({
  79. selector: "initialize",
  80. category: 'initialization',
  81. fn: function (){
  82. var self=this;
  83. smalltalk.send(self,"_initialize",[],smalltalk.TrappedSingleton);
  84. self["@registry"]=smalltalk.HashedCollection._fromPairs_([]);
  85. return self},
  86. args: [],
  87. source: "initialize\x0a\x09super initialize.\x0a\x09registry := #{}.",
  88. messageSends: ["initialize"],
  89. referencedClasses: []
  90. }),
  91. smalltalk.Trapped);
  92. smalltalk.addMethod(
  93. "_register_name_",
  94. smalltalk.method({
  95. selector: "register:name:",
  96. category: 'accessing',
  97. fn: function (aFly,aString){
  98. var self=this;
  99. smalltalk.send(self["@registry"],"_at_put_",[aString,aFly]);
  100. return self},
  101. args: ["aFly", "aString"],
  102. source: "register: aFly name: aString\x0a\x09registry at: aString put: aFly",
  103. messageSends: ["at:put:"],
  104. referencedClasses: []
  105. }),
  106. smalltalk.Trapped);
  107. smalltalk.addMethod(
  108. "_start",
  109. smalltalk.method({
  110. selector: "start",
  111. category: 'action',
  112. fn: function (){
  113. var self=this;
  114. var $1,$2;
  115. smalltalk.send(smalltalk.send("[data-trap]","_asJQuery",[]),"_each_",[(function(index,elem){
  116. var trap;
  117. var viewName;
  118. var modelName;
  119. var tokens;
  120. var model;
  121. var view;
  122. trap=smalltalk.send(smalltalk.send(jQuery,"_value_",[elem]),"_attr_",["data-trap"]);
  123. trap;
  124. tokens=smalltalk.send(trap,"_tokenize_",[":"]);
  125. tokens;
  126. viewName=smalltalk.send(tokens,"_first",[]);
  127. viewName;
  128. modelName=smalltalk.send(tokens,"_second",[]);
  129. modelName;
  130. model=smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_byName_",[modelName]);
  131. model;
  132. $1=smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]),"_at_",[viewName]),"_new",[]);
  133. smalltalk.send($1,"_startOn_",[elem]);
  134. smalltalk.send($1,"_observe_",[model]);
  135. $2=smalltalk.send($1,"_yourself",[]);
  136. view=$2;
  137. return view;
  138. })]);
  139. return self},
  140. args: [],
  141. source: "start\x0a\x09'[data-trap]' asJQuery each: [ :index :elem |\x0a \x09| trap viewName modelName tokens model view |\x0a trap := (jQuery value: elem) attr: 'data-trap'.\x0a tokens := trap tokenize: ':'.\x0a viewName := tokens first.\x0a modelName := tokens second.\x0a \x09model := Trapped current byName: modelName.\x0a view := (Smalltalk current at: viewName) new\x0a \x09startOn: elem;\x0a observe: model;\x0a yourself.\x0a ]",
  142. messageSends: ["each:", "attr:", "value:", "tokenize:", "first", "second", "byName:", "current", "startOn:", "new", "at:", "observe:", "yourself", "asJQuery"],
  143. referencedClasses: ["Trapped", "Smalltalk"]
  144. }),
  145. smalltalk.Trapped);
  146. smalltalk.addClass('TrappedFly', smalltalk.TrappedSingleton, [], 'Trapped-Frontend');
  147. smalltalk.addMethod(
  148. "_name",
  149. smalltalk.method({
  150. selector: "name",
  151. category: 'action',
  152. fn: function (){
  153. var self=this;
  154. var $1;
  155. $1=smalltalk.send(smalltalk.send(self,"_class",[]),"_name",[]);
  156. return $1;
  157. },
  158. args: [],
  159. source: "name\x0a\x09^ self class name",
  160. messageSends: ["name", "class"],
  161. referencedClasses: []
  162. }),
  163. smalltalk.TrappedFly);
  164. smalltalk.addMethod(
  165. "_start",
  166. smalltalk.method({
  167. selector: "start",
  168. category: 'action',
  169. fn: function (){
  170. var self=this;
  171. smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_register_name_",[self,smalltalk.send(self,"_name",[])]);
  172. return self},
  173. args: [],
  174. source: "start\x0a\x09Trapped current register: self name: self name",
  175. messageSends: ["register:name:", "name", "current"],
  176. referencedClasses: ["Trapped"]
  177. }),
  178. smalltalk.TrappedFly);
  179. smalltalk.addClass('TrappedView', smalltalk.Widget, [], 'Trapped-Frontend');
  180. smalltalk.addMethod(
  181. "_observe_",
  182. smalltalk.method({
  183. selector: "observe:",
  184. category: 'initializing',
  185. fn: function (aFly){
  186. var self=this;
  187. return self},
  188. args: ["aFly"],
  189. source: "observe: aFly",
  190. messageSends: [],
  191. referencedClasses: []
  192. }),
  193. smalltalk.TrappedView);
  194. smalltalk.addMethod(
  195. "_renderOn_",
  196. smalltalk.method({
  197. selector: "renderOn:",
  198. category: 'rendering',
  199. fn: function (html){
  200. var self=this;
  201. smalltalk.send(html,"_with_",[smalltalk.send(smalltalk.send(smalltalk.send(self,"_class",[]),"_name",[]),"__comma",[": contents"])]);
  202. return self},
  203. args: ["html"],
  204. source: "renderOn: html\x0a\x09html with: self class name, ': contents'",
  205. messageSends: ["with:", ",", "name", "class"],
  206. referencedClasses: []
  207. }),
  208. smalltalk.TrappedView);
  209. smalltalk.addMethod(
  210. "_startOn_",
  211. smalltalk.method({
  212. selector: "startOn:",
  213. category: 'initializing',
  214. fn: function (aHTMLElement){
  215. var self=this;
  216. var el;
  217. el=smalltalk.send(jQuery,"_value_",[aHTMLElement]);
  218. smalltalk.send(el,"_empty",[]);
  219. smalltalk.send(self,"_appendToJQuery_",[el]);
  220. return self},
  221. args: ["aHTMLElement"],
  222. source: "startOn: aHTMLElement\x0a\x09| el |\x0a el := jQuery value: aHTMLElement.\x0a el empty.\x0a self appendToJQuery: el.",
  223. messageSends: ["value:", "empty", "appendToJQuery:"],
  224. referencedClasses: []
  225. }),
  226. smalltalk.TrappedView);