Trapped-Frontend.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. smalltalk.addPackage('Trapped-Frontend', {});
  2. smalltalk.addClass('TrappedFly', smalltalk.Object, ['payload'], 'Trapped-Frontend');
  3. smalltalk.addMethod(
  4. "_name",
  5. smalltalk.method({
  6. selector: "name",
  7. category: 'action',
  8. fn: function (){
  9. var self=this;
  10. var $1;
  11. $1=smalltalk.send(smalltalk.send(self,"_class",[]),"_name",[]);
  12. return $1;
  13. },
  14. args: [],
  15. source: "name\x0a\x09^ self class name",
  16. messageSends: ["name", "class"],
  17. referencedClasses: []
  18. }),
  19. smalltalk.TrappedFly);
  20. smalltalk.addMethod(
  21. "_payload",
  22. smalltalk.method({
  23. selector: "payload",
  24. category: 'accessing',
  25. fn: function (){
  26. var self=this;
  27. return self["@payload"];
  28. },
  29. args: [],
  30. source: "payload\x0a\x09^payload",
  31. messageSends: [],
  32. referencedClasses: []
  33. }),
  34. smalltalk.TrappedFly);
  35. smalltalk.addMethod(
  36. "_payload_",
  37. smalltalk.method({
  38. selector: "payload:",
  39. category: 'accessing',
  40. fn: function (anObject){
  41. var self=this;
  42. self["@payload"]=anObject;
  43. return self},
  44. args: ["anObject"],
  45. source: "payload: anObject\x0a\x09payload := anObject",
  46. messageSends: [],
  47. referencedClasses: []
  48. }),
  49. smalltalk.TrappedFly);
  50. smalltalk.addMethod(
  51. "_start",
  52. smalltalk.method({
  53. selector: "start",
  54. category: 'action',
  55. fn: function (){
  56. var self=this;
  57. smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_register_name_",[self,smalltalk.send(self,"_name",[])]);
  58. return self},
  59. args: [],
  60. source: "start\x0a\x09Trapped current register: self name: self name",
  61. messageSends: ["register:name:", "name", "current"],
  62. referencedClasses: ["Trapped"]
  63. }),
  64. smalltalk.TrappedFly);
  65. smalltalk.addMethod(
  66. "_start",
  67. smalltalk.method({
  68. selector: "start",
  69. category: 'action',
  70. fn: function (){
  71. var self=this;
  72. smalltalk.send(smalltalk.send(self,"_new",[]),"_start",[]);
  73. return self},
  74. args: [],
  75. source: "start\x0a\x09self new start",
  76. messageSends: ["start", "new"],
  77. referencedClasses: []
  78. }),
  79. smalltalk.TrappedFly.klass);
  80. smalltalk.addClass('TrappedSingleton', smalltalk.Object, [], 'Trapped-Frontend');
  81. smalltalk.addMethod(
  82. "_start",
  83. smalltalk.method({
  84. selector: "start",
  85. category: 'action',
  86. fn: function (){
  87. var self=this;
  88. var $1;
  89. $1=smalltalk.send(self,"_subclassResponsibility",[]);
  90. return $1;
  91. },
  92. args: [],
  93. source: "start\x0a\x09^ self subclassResponsibility",
  94. messageSends: ["subclassResponsibility"],
  95. referencedClasses: []
  96. }),
  97. smalltalk.TrappedSingleton);
  98. smalltalk.TrappedSingleton.klass.iVarNames = ['current'];
  99. smalltalk.addMethod(
  100. "_current",
  101. smalltalk.method({
  102. selector: "current",
  103. category: 'accessing',
  104. fn: function (){
  105. var self=this;
  106. var $1;
  107. if(($receiver = self["@current"]) == nil || $receiver == undefined){
  108. self["@current"]=smalltalk.send(self,"_new",[]);
  109. $1=self["@current"];
  110. } else {
  111. $1=self["@current"];
  112. };
  113. return $1;
  114. },
  115. args: [],
  116. source: "current\x0a\x09^ current ifNil: [ current := self new ]",
  117. messageSends: ["ifNil:", "new"],
  118. referencedClasses: []
  119. }),
  120. smalltalk.TrappedSingleton.klass);
  121. smalltalk.addMethod(
  122. "_start",
  123. smalltalk.method({
  124. selector: "start",
  125. category: 'action',
  126. fn: function (){
  127. var self=this;
  128. smalltalk.send(smalltalk.send(self,"_current",[]),"_start",[]);
  129. return self},
  130. args: [],
  131. source: "start\x0a\x09self current start",
  132. messageSends: ["start", "current"],
  133. referencedClasses: []
  134. }),
  135. smalltalk.TrappedSingleton.klass);
  136. smalltalk.addClass('Trapped', smalltalk.TrappedSingleton, ['registry'], 'Trapped-Frontend');
  137. smalltalk.addMethod(
  138. "_byName_",
  139. smalltalk.method({
  140. selector: "byName:",
  141. category: 'accessing',
  142. fn: function (aString){
  143. var self=this;
  144. var $1;
  145. $1=smalltalk.send(self["@registry"],"_at_",[aString]);
  146. return $1;
  147. },
  148. args: ["aString"],
  149. source: "byName: aString\x0a\x09^ registry at: aString",
  150. messageSends: ["at:"],
  151. referencedClasses: []
  152. }),
  153. smalltalk.Trapped);
  154. smalltalk.addMethod(
  155. "_initialize",
  156. smalltalk.method({
  157. selector: "initialize",
  158. category: 'initialization',
  159. fn: function (){
  160. var self=this;
  161. smalltalk.send(self,"_initialize",[],smalltalk.TrappedSingleton);
  162. self["@registry"]=smalltalk.HashedCollection._fromPairs_([]);
  163. return self},
  164. args: [],
  165. source: "initialize\x0a\x09super initialize.\x0a\x09registry := #{}.",
  166. messageSends: ["initialize"],
  167. referencedClasses: []
  168. }),
  169. smalltalk.Trapped);
  170. smalltalk.addMethod(
  171. "_read_do_",
  172. smalltalk.method({
  173. selector: "read:do:",
  174. category: 'accessing',
  175. fn: function (path,aBlock){
  176. var self=this;
  177. var model;
  178. model=smalltalk.send(smalltalk.send(path,"_allButFirst",[]),"_inject_into_",[smalltalk.send(smalltalk.send(self,"_byName_",[smalltalk.send(path,"_first",[])]),"_payload",[]),(function(soFar,segment){
  179. return smalltalk.send(soFar,"_at_",[segment]);
  180. })]);
  181. smalltalk.send(aBlock,"_value_",[model]);
  182. return self},
  183. args: ["path", "aBlock"],
  184. source: "read: path do: aBlock\x0a\x09| model |\x0a model := path allButFirst\x0a \x09inject: (self byName: path first) payload\x0a into: [ :soFar :segment | soFar at: segment ].\x0a\x09aBlock value: model.",
  185. messageSends: ["inject:into:", "payload", "byName:", "first", "at:", "allButFirst", "value:"],
  186. referencedClasses: []
  187. }),
  188. smalltalk.Trapped);
  189. smalltalk.addMethod(
  190. "_register_name_",
  191. smalltalk.method({
  192. selector: "register:name:",
  193. category: 'accessing',
  194. fn: function (aFly,aString){
  195. var self=this;
  196. smalltalk.send(self["@registry"],"_at_put_",[aString,aFly]);
  197. return self},
  198. args: ["aFly", "aString"],
  199. source: "register: aFly name: aString\x0a\x09registry at: aString put: aFly",
  200. messageSends: ["at:put:"],
  201. referencedClasses: []
  202. }),
  203. smalltalk.Trapped);
  204. smalltalk.addMethod(
  205. "_start",
  206. smalltalk.method({
  207. selector: "start",
  208. category: 'action',
  209. fn: function (){
  210. var self=this;
  211. smalltalk.send(smalltalk.send("[data-trap]","_asJQuery",[]),"_each_",[(function(index,elem){
  212. var trap;
  213. var jq;
  214. var viewName;
  215. var modelName;
  216. var tokens;
  217. jq=smalltalk.send(elem,"_asJQuery",[]);
  218. jq;
  219. trap=smalltalk.send(jq,"_attr_",["data-trap"]);
  220. trap;
  221. tokens=smalltalk.send(trap,"_tokenize_",[":"]);
  222. tokens;
  223. viewName=smalltalk.send(tokens,"_first",[]);
  224. viewName;
  225. modelName=smalltalk.send(tokens,"_second",[]);
  226. modelName;
  227. return smalltalk.send([modelName],"_trapDescend_",[(function(){
  228. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send((smalltalk.Smalltalk || Smalltalk),"_current",[]),"_at_",[viewName]),"_new",[]),"_appendToJQuery_",[jq]);
  229. })]);
  230. })]);
  231. return self},
  232. args: [],
  233. source: "start\x0a\x09'[data-trap]' asJQuery each: [ :index :elem |\x0a \x09| trap jq viewName modelName tokens |\x0a jq := elem asJQuery.\x0a trap := jq attr: 'data-trap'.\x0a tokens := trap tokenize: ':'.\x0a viewName := tokens first.\x0a modelName := tokens second.\x0a { modelName } trapDescend: [(Smalltalk current at: viewName) new appendToJQuery: jq].\x0a ]",
  234. messageSends: ["each:", "asJQuery", "attr:", "tokenize:", "first", "second", "trapDescend:", "appendToJQuery:", "new", "at:", "current"],
  235. referencedClasses: ["Smalltalk"]
  236. }),
  237. smalltalk.Trapped);
  238. smalltalk.addMethod(
  239. "_path",
  240. smalltalk.method({
  241. selector: "path",
  242. category: 'accessing',
  243. fn: function (){
  244. var self=this;
  245. var $1;
  246. $1=smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_elements",[]);
  247. return $1;
  248. },
  249. args: [],
  250. source: "path\x0a\x09^TrappedPathStack current elements",
  251. messageSends: ["elements", "current"],
  252. referencedClasses: ["TrappedPathStack"]
  253. }),
  254. smalltalk.Trapped.klass);
  255. smalltalk.addClass('TrappedPathStack', smalltalk.TrappedSingleton, ['elements'], 'Trapped-Frontend');
  256. smalltalk.addMethod(
  257. "_append_",
  258. smalltalk.method({
  259. selector: "append:",
  260. category: 'descending',
  261. fn: function (anArray){
  262. var self=this;
  263. self["@elements"]=smalltalk.send(self["@elements"],"__comma",[anArray]);
  264. return self},
  265. args: ["anArray"],
  266. source: "append: anArray\x0a elements := elements, anArray",
  267. messageSends: [","],
  268. referencedClasses: []
  269. }),
  270. smalltalk.TrappedPathStack);
  271. smalltalk.addMethod(
  272. "_elements",
  273. smalltalk.method({
  274. selector: "elements",
  275. category: 'accessing',
  276. fn: function (){
  277. var self=this;
  278. return self["@elements"];
  279. },
  280. args: [],
  281. source: "elements\x0a\x09^elements",
  282. messageSends: [],
  283. referencedClasses: []
  284. }),
  285. smalltalk.TrappedPathStack);
  286. smalltalk.addMethod(
  287. "_initialize",
  288. smalltalk.method({
  289. selector: "initialize",
  290. category: 'initialization',
  291. fn: function (){
  292. var self=this;
  293. self["@elements"]=[];
  294. return self},
  295. args: [],
  296. source: "initialize\x0a\x09elements := #().",
  297. messageSends: [],
  298. referencedClasses: []
  299. }),
  300. smalltalk.TrappedPathStack);
  301. smalltalk.addMethod(
  302. "_with_do_",
  303. smalltalk.method({
  304. selector: "with:do:",
  305. category: 'descending',
  306. fn: function (anArray,aBlock){
  307. var self=this;
  308. var old;
  309. old=self["@elements"];
  310. smalltalk.send((function(){
  311. smalltalk.send(self,"_append_",[anArray]);
  312. return smalltalk.send(aBlock,"_value",[]);
  313. }),"_ensure_",[(function(){
  314. self["@elements"]=old;
  315. return self["@elements"];
  316. })]);
  317. return self},
  318. args: ["anArray", "aBlock"],
  319. source: "with: anArray do: aBlock\x0a\x09| old |\x0a old := elements.\x0a [ self append: anArray.\x0a\x09aBlock value ] ensure: [ elements := old ]",
  320. messageSends: ["ensure:", "append:", "value"],
  321. referencedClasses: []
  322. }),
  323. smalltalk.TrappedPathStack);
  324. smalltalk.addMethod(
  325. "_trapDescend_",
  326. smalltalk.method({
  327. selector: "trapDescend:",
  328. category: '*Trapped-Frontend',
  329. fn: function (aBlock){
  330. var self=this;
  331. smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_with_do_",[self,aBlock]);
  332. return self},
  333. args: ["aBlock"],
  334. source: "trapDescend: aBlock\x0a\x09TrappedPathStack current with: self do: aBlock",
  335. messageSends: ["with:do:", "current"],
  336. referencedClasses: ["TrappedPathStack"]
  337. }),
  338. smalltalk.Array);
  339. smalltalk.addMethod(
  340. "_trapDescend_",
  341. smalltalk.method({
  342. selector: "trapDescend:",
  343. category: '*Trapped-Frontend',
  344. fn: function (aBlock){
  345. var self=this;
  346. smalltalk.send(smalltalk.send((smalltalk.TrappedPathStack || TrappedPathStack),"_current",[]),"_with_do_",[self,aBlock]);
  347. return self},
  348. args: ["aBlock"],
  349. source: "trapDescend: aBlock\x0a\x09TrappedPathStack current with: self do: aBlock",
  350. messageSends: ["with:do:", "current"],
  351. referencedClasses: ["TrappedPathStack"]
  352. }),
  353. smalltalk.Array);
  354. smalltalk.addMethod(
  355. "_trap_read_",
  356. smalltalk.method({
  357. selector: "trap:read:",
  358. category: '*Trapped-Frontend',
  359. fn: function (path,aBlock){
  360. var self=this;
  361. smalltalk.send(path,"_trapDescend_",[(function(){
  362. var actual;
  363. actual=smalltalk.send((smalltalk.Trapped || Trapped),"_path",[]);
  364. actual;
  365. return smalltalk.send((function(){
  366. return smalltalk.send(smalltalk.send((smalltalk.Trapped || Trapped),"_current",[]),"_read_do_",[actual,(function(model){
  367. return smalltalk.send(aBlock,"_value_value_",[self,model]);
  368. })]);
  369. }),"_fork",[]);
  370. })]);
  371. return self},
  372. args: ["path", "aBlock"],
  373. source: "trap: path read: aBlock\x0a\x09path trapDescend: [ | actual |\x0a \x09actual := Trapped path.\x0a \x09\x22TODO register for later\x22\x0a [ Trapped current read: actual do: [ :model |\x0a \x09aBlock value: self value: model\x0a \x09]] fork\x0a ]",
  374. messageSends: ["trapDescend:", "path", "fork", "read:do:", "value:value:", "current"],
  375. referencedClasses: ["Trapped"]
  376. }),
  377. smalltalk.TagBrush);
  378. smalltalk.addMethod(
  379. "_trapShow_",
  380. smalltalk.method({
  381. selector: "trapShow:",
  382. category: '*Trapped-Frontend',
  383. fn: function (path){
  384. var self=this;
  385. var $1;
  386. smalltalk.send(self,"_trap_read_",[path,(function(brush,model){
  387. smalltalk.send(brush,"_empty",[]);
  388. $1=smalltalk.send(brush,"_with_",[model]);
  389. return $1;
  390. })]);
  391. return self},
  392. args: ["path"],
  393. source: "trapShow: path\x0a\x09self trap: path read: [ :brush :model | brush empty; with: model ]",
  394. messageSends: ["trap:read:", "empty", "with:"],
  395. referencedClasses: []
  396. }),
  397. smalltalk.TagBrush);