TrySmalltalk.js 71 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117
  1. smalltalk.addClass('TrySmalltalkWidget', smalltalk.Widget, ['workspace'], 'TrySmalltalk');
  2. smalltalk.addMethod(
  3. '_renderOn_',
  4. smalltalk.method({
  5. selector: 'renderOn:',
  6. category: 'not yet classified',
  7. fn: function (html){
  8. var self=this;
  9. (function($rec){smalltalk.send($rec, "_id_", ["title"]);return smalltalk.send($rec, "_with_", [unescape("Try%20Smalltalk%21%21")]);})(smalltalk.send(html, "_h1", []));
  10. smalltalk.send(smalltalk.send(html, "_div", []), "_id_", ["profStefWorkspace"]);
  11. smalltalk.send(self, "_appendWorkspace", []);
  12. return self;},
  13. source: unescape('renderOn%3A%20html%0A%09html%20h1%20%0A%09%09id%3A%20%27title%27%3B%0A%09%09with%3A%20%27Try%20Smalltalk%21%21%27.%0A%09html%20div%20id%3A%20%27profStefWorkspace%27.%0A%09self%20appendWorkspace.'),
  14. messageSends: ["id:", "with:", "h1", "div", "appendWorkspace"],
  15. referencedClasses: []
  16. }),
  17. smalltalk.TrySmalltalkWidget);
  18. smalltalk.addMethod(
  19. '_workspace',
  20. smalltalk.method({
  21. selector: 'workspace',
  22. category: 'not yet classified',
  23. fn: function (){
  24. var self=this;
  25. return (($receiver = self['@workspace']) == nil || $receiver == undefined) ? (function(){self['@workspace']=smalltalk.send((smalltalk.ProfStefWorkspace || ProfStefWorkspace), "_new", []);smalltalk.send(smalltalk.send((smalltalk.ProfStef || ProfStef), "_default", []), "_widget_", [self]);return self['@workspace'];})() : $receiver;
  26. return self;},
  27. source: unescape('workspace%0A%09%5E%20workspace%20ifNil%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%09workspace%20%3A%3D%20ProfStefWorkspace%20new.%0A%20%20%20%20%20%20%20%20%20%20%09ProfStef%20default%20widget%3A%20self.%0A%20%20%20%20%20%20%20%20%20%20%09workspace%5D'),
  28. messageSends: ["ifNil:", "new", "widget:", "default"],
  29. referencedClasses: []
  30. }),
  31. smalltalk.TrySmalltalkWidget);
  32. smalltalk.addMethod(
  33. '_appendWorkspace',
  34. smalltalk.method({
  35. selector: 'appendWorkspace',
  36. category: 'not yet classified',
  37. fn: function (){
  38. var self=this;
  39. smalltalk.send(smalltalk.send(self, "_workspace", []), "_appendToJQuery_", [smalltalk.send(unescape("%23profStefWorkspace"), "_asJQuery", [])]);
  40. smalltalk.send(smalltalk.send((smalltalk.ProfStef || ProfStef), "_default", []), "_showCurrentLesson", []);
  41. return self;},
  42. source: unescape('appendWorkspace%0A%09self%20workspace%20appendToJQuery%3A%20%27%23profStefWorkspace%27%20asJQuery.%0A%09ProfStef%20default%20showCurrentLesson.'),
  43. messageSends: ["appendToJQuery:", "workspace", "asJQuery", "showCurrentLesson", "default"],
  44. referencedClasses: []
  45. }),
  46. smalltalk.TrySmalltalkWidget);
  47. smalltalk.addClass('AbstractTutorial', smalltalk.Object, [], 'TrySmalltalk');
  48. smalltalk.addMethod(
  49. '_indexOfLesson_',
  50. smalltalk.method({
  51. selector: 'indexOfLesson:',
  52. category: 'not yet classified',
  53. fn: function (aSelector){
  54. var self=this;
  55. return smalltalk.send(smalltalk.send(self, "_tableOfContents", []), "_indexOf_", [aSelector]);
  56. return self;},
  57. source: unescape('indexOfLesson%3A%20aSelector%0A%09%5Eself%20tableOfContents%20indexOf%3A%20aSelector.'),
  58. messageSends: ["indexOf:", "tableOfContents"],
  59. referencedClasses: []
  60. }),
  61. smalltalk.AbstractTutorial);
  62. smalltalk.addMethod(
  63. '_tableOfContents',
  64. smalltalk.method({
  65. selector: 'tableOfContents',
  66. category: 'not yet classified',
  67. fn: function (){
  68. var self=this;
  69. return ["welcome", "testLesson", "theEnd"];
  70. return self;},
  71. source: unescape('tableOfContents%0A%5E%20%23%28%0A%20%20%27welcome%27%0A%20%20%27testLesson%27%0A%20%20%27theEnd%27%0A%29'),
  72. messageSends: [],
  73. referencedClasses: []
  74. }),
  75. smalltalk.AbstractTutorial);
  76. smalltalk.addMethod(
  77. '_welcome',
  78. smalltalk.method({
  79. selector: 'welcome',
  80. category: 'not yet classified',
  81. fn: function (){
  82. var self=this;
  83. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Welcome", unescape("%22Hi%2C%20this%20is%20a%20test%20tutorial.%22")]);
  84. return self;},
  85. source: unescape('welcome%0A%09%5E%20Lesson%0A%09%09title%3A%20%27Welcome%27%20%0A%09%09contents%3A%20%27%22Hi%2C%20this%20is%20a%20test%20tutorial.%22%27'),
  86. messageSends: ["title:contents:"],
  87. referencedClasses: []
  88. }),
  89. smalltalk.AbstractTutorial);
  90. smalltalk.addMethod(
  91. '_testLesson',
  92. smalltalk.method({
  93. selector: 'testLesson',
  94. category: 'not yet classified',
  95. fn: function (){
  96. var self=this;
  97. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Test Lesson", unescape("%22This%20lesson%20is%20a%20test%22")]);
  98. return self;},
  99. source: unescape('testLesson%0A%09%5E%20Lesson%0A%09%09title%3A%20%27Test%20Lesson%27%20%0A%09%09contents%3A%20%27%22This%20lesson%20is%20a%20test%22%27'),
  100. messageSends: ["title:contents:"],
  101. referencedClasses: []
  102. }),
  103. smalltalk.AbstractTutorial);
  104. smalltalk.addMethod(
  105. '_theEnd',
  106. smalltalk.method({
  107. selector: 'theEnd',
  108. category: 'not yet classified',
  109. fn: function (){
  110. var self=this;
  111. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["The End", unescape("%22And%20that%27d%20be%20pretty%20much%20it%20%3A%29%22")]);
  112. return self;},
  113. source: unescape('theEnd%0A%09%5E%20Lesson%0A%09%09title%3A%20%27The%20End%27%20%0A%09%09contents%3A%20%27%22And%20that%27%27d%20be%20pretty%20much%20it%20%3A%29%22%27'),
  114. messageSends: ["title:contents:"],
  115. referencedClasses: []
  116. }),
  117. smalltalk.AbstractTutorial);
  118. smalltalk.addMethod(
  119. '_lessonAt_',
  120. smalltalk.method({
  121. selector: 'lessonAt:',
  122. category: 'not yet classified',
  123. fn: function (anInteger){
  124. var self=this;
  125. var lessonSelector=nil;
  126. lessonSelector=smalltalk.send(smalltalk.send(self, "_tableOfContents", []), "_at_", [anInteger]);
  127. return smalltalk.send(self, "_perform_", [lessonSelector]);
  128. return self;},
  129. source: unescape('lessonAt%3A%20anInteger%0A%09%7C%20lessonSelector%20%7C%0A%09lessonSelector%20%3A%3D%20self%20tableOfContents%20at%3A%20anInteger.%0A%09%5E%20self%20perform%3A%20lessonSelector.'),
  130. messageSends: ["at:", "tableOfContents", "perform:"],
  131. referencedClasses: []
  132. }),
  133. smalltalk.AbstractTutorial);
  134. smalltalk.addMethod(
  135. '_size',
  136. smalltalk.method({
  137. selector: 'size',
  138. category: 'not yet classified',
  139. fn: function (){
  140. var self=this;
  141. return smalltalk.send(smalltalk.send(self, "_tableOfContents", []), "_size", []);
  142. return self;},
  143. source: unescape('size%0A%09%5E%20self%20tableOfContents%20size'),
  144. messageSends: ["size", "tableOfContents"],
  145. referencedClasses: []
  146. }),
  147. smalltalk.AbstractTutorial);
  148. smalltalk.addClass('Lesson', smalltalk.Object, ['title', 'contents'], 'TrySmalltalk');
  149. smalltalk.addMethod(
  150. '_contents',
  151. smalltalk.method({
  152. selector: 'contents',
  153. category: 'not yet classified',
  154. fn: function (){
  155. var self=this;
  156. return (($receiver = self['@contents']) == nil || $receiver == undefined) ? (function(){return self['@contents']="";})() : $receiver;
  157. return self;},
  158. source: unescape('contents%0A%09%5E%20contents%20ifNil%3A%20%5Bcontents%20%3A%3D%20%27%27%5D'),
  159. messageSends: ["ifNil:"],
  160. referencedClasses: []
  161. }),
  162. smalltalk.Lesson);
  163. smalltalk.addMethod(
  164. '_contents_',
  165. smalltalk.method({
  166. selector: 'contents:',
  167. category: 'not yet classified',
  168. fn: function (aString){
  169. var self=this;
  170. self['@contents']=aString;
  171. return self;},
  172. source: unescape('contents%3A%20aString%0A%09contents%20%3A%3D%20aString'),
  173. messageSends: [],
  174. referencedClasses: []
  175. }),
  176. smalltalk.Lesson);
  177. smalltalk.addMethod(
  178. '_title_',
  179. smalltalk.method({
  180. selector: 'title:',
  181. category: 'not yet classified',
  182. fn: function (aString){
  183. var self=this;
  184. self['@title']=aString;
  185. return self;},
  186. source: unescape('title%3A%20aString%0A%09title%20%3A%3D%20aString'),
  187. messageSends: [],
  188. referencedClasses: []
  189. }),
  190. smalltalk.Lesson);
  191. smalltalk.addMethod(
  192. '_title',
  193. smalltalk.method({
  194. selector: 'title',
  195. category: 'not yet classified',
  196. fn: function (){
  197. var self=this;
  198. return (($receiver = self['@title']) == nil || $receiver == undefined) ? (function(){return self['@title']="";})() : $receiver;
  199. return self;},
  200. source: unescape('title%0A%09%5E%20title%20ifNil%3A%20%5Btitle%20%3A%3D%20%27%27%5D'),
  201. messageSends: ["ifNil:"],
  202. referencedClasses: []
  203. }),
  204. smalltalk.Lesson);
  205. smalltalk.addMethod(
  206. '_title_contents_',
  207. smalltalk.method({
  208. selector: 'title:contents:',
  209. category: 'not yet classified',
  210. fn: function (aTitle, someContents){
  211. var self=this;
  212. return (function($rec){smalltalk.send($rec, "_title_", [aTitle]);return smalltalk.send($rec, "_contents_", [someContents]);})(smalltalk.send(self, "_new", []));
  213. return self;},
  214. source: unescape('title%3A%20aTitle%20contents%3A%20someContents%0A%09%5E%20%28self%20new%29%0A%09%09title%3A%20aTitle%3B%0A%09%09contents%3A%20someContents'),
  215. messageSends: ["title:", "contents:", "new"],
  216. referencedClasses: []
  217. }),
  218. smalltalk.Lesson.klass);
  219. smalltalk.addClass('TutorialPlayer', smalltalk.Object, ['tutorialPosition', 'tutorial'], 'TrySmalltalk');
  220. smalltalk.addMethod(
  221. '_currentLesson',
  222. smalltalk.method({
  223. selector: 'currentLesson',
  224. category: 'not yet classified',
  225. fn: function (){
  226. var self=this;
  227. return smalltalk.send(smalltalk.send(self, "_tutorial", []), "_lessonAt_", [smalltalk.send(self, "_tutorialPosition", [])]);
  228. return self;},
  229. source: unescape('currentLesson%0A%09%5E%20self%20tutorial%20lessonAt%3A%20self%20tutorialPosition.'),
  230. messageSends: ["lessonAt:", "tutorial", "tutorialPosition"],
  231. referencedClasses: []
  232. }),
  233. smalltalk.TutorialPlayer);
  234. smalltalk.addMethod(
  235. '_first',
  236. smalltalk.method({
  237. selector: 'first',
  238. category: 'not yet classified',
  239. fn: function (){
  240. var self=this;
  241. smalltalk.send(self, "_rewind", []);
  242. return smalltalk.send(self, "_currentLesson", []);
  243. return self;},
  244. source: unescape('first%0A%09self%20rewind.%0A%09%5E%20self%20currentLesson'),
  245. messageSends: ["rewind", "currentLesson"],
  246. referencedClasses: []
  247. }),
  248. smalltalk.TutorialPlayer);
  249. smalltalk.addMethod(
  250. '_last',
  251. smalltalk.method({
  252. selector: 'last',
  253. category: 'not yet classified',
  254. fn: function (){
  255. var self=this;
  256. self['@tutorialPosition']=smalltalk.send(self, "_size", []);
  257. return smalltalk.send(self, "_currentLesson", []);
  258. return self;},
  259. source: unescape('last%0A%09tutorialPosition%20%3A%3D%20self%20size.%0A%09%5E%20self%20currentLesson'),
  260. messageSends: ["size", "currentLesson"],
  261. referencedClasses: []
  262. }),
  263. smalltalk.TutorialPlayer);
  264. smalltalk.addMethod(
  265. '_next',
  266. smalltalk.method({
  267. selector: 'next',
  268. category: 'not yet classified',
  269. fn: function (){
  270. var self=this;
  271. (($receiver = (($receiver = smalltalk.send(self, "_tutorialPosition", [])).klass === smalltalk.Number) ? $receiver <smalltalk.send(self, "_size", []) : smalltalk.send($receiver, "__lt", [smalltalk.send(self, "_size", [])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return self['@tutorialPosition']=(($receiver = self['@tutorialPosition']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return self['@tutorialPosition']=(($receiver = self['@tutorialPosition']).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]);})]);
  272. return smalltalk.send(self, "_currentLesson", []);
  273. return self;},
  274. source: unescape('next%0A%09self%20tutorialPosition%20%3C%20self%20size%0A%09%09ifTrue%3A%20%5BtutorialPosition%20%3A%3D%20tutorialPosition%20+%201%5D.%0A%09%5E%20self%20currentLesson'),
  275. messageSends: ["ifTrue:", unescape("%3C"), "tutorialPosition", "size", unescape("+"), "currentLesson"],
  276. referencedClasses: []
  277. }),
  278. smalltalk.TutorialPlayer);
  279. smalltalk.addMethod(
  280. '_previous',
  281. smalltalk.method({
  282. selector: 'previous',
  283. category: 'not yet classified',
  284. fn: function (){
  285. var self=this;
  286. (($receiver = (($receiver = self['@tutorialPosition']).klass === smalltalk.Number) ? $receiver >(1) : smalltalk.send($receiver, "__gt", [(1)])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return self['@tutorialPosition']=(($receiver = self['@tutorialPosition']).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return self['@tutorialPosition']=(($receiver = self['@tutorialPosition']).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]);})]);
  287. return smalltalk.send(self, "_currentLesson", []);
  288. return self;},
  289. source: unescape('previous%0A%09tutorialPosition%20%3E%20%201%20ifTrue%3A%20%5BtutorialPosition%20%3A%3D%20tutorialPosition%20%20-%201%5D.%0A%09%5E%20self%20currentLesson'),
  290. messageSends: ["ifTrue:", unescape("%3E"), unescape("-"), "currentLesson"],
  291. referencedClasses: []
  292. }),
  293. smalltalk.TutorialPlayer);
  294. smalltalk.addMethod(
  295. '_rewind',
  296. smalltalk.method({
  297. selector: 'rewind',
  298. category: 'not yet classified',
  299. fn: function (){
  300. var self=this;
  301. self['@tutorialPosition']=(1);
  302. return self;},
  303. source: unescape('rewind%0A%09tutorialPosition%20%3A%3D%201.'),
  304. messageSends: [],
  305. referencedClasses: []
  306. }),
  307. smalltalk.TutorialPlayer);
  308. smalltalk.addMethod(
  309. '_size',
  310. smalltalk.method({
  311. selector: 'size',
  312. category: 'not yet classified',
  313. fn: function (){
  314. var self=this;
  315. return smalltalk.send(smalltalk.send(self, "_tutorial", []), "_size", []);
  316. return self;},
  317. source: unescape('size%0A%09%5E%20self%20tutorial%20size'),
  318. messageSends: ["size", "tutorial"],
  319. referencedClasses: []
  320. }),
  321. smalltalk.TutorialPlayer);
  322. smalltalk.addMethod(
  323. '_tutorial',
  324. smalltalk.method({
  325. selector: 'tutorial',
  326. category: 'not yet classified',
  327. fn: function (){
  328. var self=this;
  329. return (($receiver = self['@tutorial']) == nil || $receiver == undefined) ? (function(){return self['@tutorial']=smalltalk.send((smalltalk.SmalltalkSyntaxTutorial || SmalltalkSyntaxTutorial), "_new", []);})() : $receiver;
  330. return self;},
  331. source: unescape('tutorial%0A%09%5E%20tutorial%20%20ifNil%3A%20%5Btutorial%20%3A%3D%20SmalltalkSyntaxTutorial%20new%5D'),
  332. messageSends: ["ifNil:", "new"],
  333. referencedClasses: []
  334. }),
  335. smalltalk.TutorialPlayer);
  336. smalltalk.addMethod(
  337. '_tutorial_',
  338. smalltalk.method({
  339. selector: 'tutorial:',
  340. category: 'not yet classified',
  341. fn: function (aTutorial){
  342. var self=this;
  343. self['@tutorial']=aTutorial;
  344. return self;},
  345. source: unescape('tutorial%3A%20aTutorial%0A%09tutorial%20%3A%3D%20aTutorial'),
  346. messageSends: [],
  347. referencedClasses: []
  348. }),
  349. smalltalk.TutorialPlayer);
  350. smalltalk.addMethod(
  351. '_tutorialPosition',
  352. smalltalk.method({
  353. selector: 'tutorialPosition',
  354. category: 'not yet classified',
  355. fn: function (){
  356. var self=this;
  357. return (($receiver = self['@tutorialPosition']) == nil || $receiver == undefined) ? (function(){smalltalk.send(self, "_rewind", []);return self['@tutorialPosition'];})() : $receiver;
  358. return self;},
  359. source: unescape('tutorialPosition%20%0A%09%5E%20tutorialPosition%20%20ifNil%3A%20%5B%0A%09%09self%20rewind.%0A%09%09tutorialPosition.%0A%09%5D.'),
  360. messageSends: ["ifNil:", "rewind"],
  361. referencedClasses: []
  362. }),
  363. smalltalk.TutorialPlayer);
  364. smalltalk.addMethod(
  365. '_tutorialPosition_',
  366. smalltalk.method({
  367. selector: 'tutorialPosition:',
  368. category: 'not yet classified',
  369. fn: function (aTutorialPosition){
  370. var self=this;
  371. self['@tutorialPosition']=aTutorialPosition;
  372. return self;},
  373. source: unescape('tutorialPosition%3A%20aTutorialPosition%20%0A%09tutorialPosition%20%3A%3D%20aTutorialPosition'),
  374. messageSends: [],
  375. referencedClasses: []
  376. }),
  377. smalltalk.TutorialPlayer);
  378. smalltalk.addClass('ProfStef', smalltalk.Object, ['tutorialPlayer', 'widget'], 'TrySmalltalk');
  379. smalltalk.addMethod(
  380. '_tutorialPlayer',
  381. smalltalk.method({
  382. selector: 'tutorialPlayer',
  383. category: 'not yet classified',
  384. fn: function (){
  385. var self=this;
  386. return (($receiver = self['@tutorialPlayer']) == nil || $receiver == undefined) ? (function(){return self['@tutorialPlayer']=smalltalk.send((smalltalk.TutorialPlayer || TutorialPlayer), "_new", []);})() : $receiver;
  387. return self;},
  388. source: unescape('tutorialPlayer%0A%09%5E%20tutorialPlayer%20ifNil%3A%20%5BtutorialPlayer%20%3A%3D%20TutorialPlayer%20new%5D'),
  389. messageSends: ["ifNil:", "new"],
  390. referencedClasses: [smalltalk.TutorialPlayer]
  391. }),
  392. smalltalk.ProfStef);
  393. smalltalk.addMethod(
  394. '_first',
  395. smalltalk.method({
  396. selector: 'first',
  397. category: 'not yet classified',
  398. fn: function (){
  399. var self=this;
  400. smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_first", []);
  401. return smalltalk.send(self, "_showCurrentLesson", []);
  402. return self;},
  403. source: unescape('first%0A%09self%20tutorialPlayer%20first.%0A%09%5E%20self%20showCurrentLesson.'),
  404. messageSends: ["first", "tutorialPlayer", "showCurrentLesson"],
  405. referencedClasses: []
  406. }),
  407. smalltalk.ProfStef);
  408. smalltalk.addMethod(
  409. '_progress',
  410. smalltalk.method({
  411. selector: 'progress',
  412. category: 'not yet classified',
  413. fn: function (){
  414. var self=this;
  415. return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(unescape("%28"), "__comma", [smalltalk.send(self, "_tutorialPositionString", [])]), "__comma", [unescape("/")]), "__comma", [smalltalk.send(self, "_tutorialSizeString", [])]), "__comma", [unescape("%29")]);
  416. return self;},
  417. source: unescape('progress%0A%09%5E%20%27%28%27%2C%20self%20tutorialPositionString%2C%20%27/%27%2C%20self%20tutorialSizeString%2C%20%27%29%27.'),
  418. messageSends: [unescape("%2C"), "tutorialPositionString", "tutorialSizeString"],
  419. referencedClasses: []
  420. }),
  421. smalltalk.ProfStef);
  422. smalltalk.addMethod(
  423. '_tutorialPositionString',
  424. smalltalk.method({
  425. selector: 'tutorialPositionString',
  426. category: 'not yet classified',
  427. fn: function (){
  428. var self=this;
  429. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_tutorialPosition", []), "_asString", []);
  430. return self;},
  431. source: unescape('tutorialPositionString%0A%09%5E%20self%20tutorialPlayer%20tutorialPosition%20asString.'),
  432. messageSends: ["asString", "tutorialPosition", "tutorialPlayer"],
  433. referencedClasses: []
  434. }),
  435. smalltalk.ProfStef);
  436. smalltalk.addMethod(
  437. '_tutorialSizeString',
  438. smalltalk.method({
  439. selector: 'tutorialSizeString',
  440. category: 'not yet classified',
  441. fn: function (){
  442. var self=this;
  443. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_size", []), "_asString", []);
  444. return self;},
  445. source: unescape('tutorialSizeString%0A%09%5E%20self%20tutorialPlayer%20size%20asString'),
  446. messageSends: ["asString", "size", "tutorialPlayer"],
  447. referencedClasses: []
  448. }),
  449. smalltalk.ProfStef);
  450. smalltalk.addMethod(
  451. '_next',
  452. smalltalk.method({
  453. selector: 'next',
  454. category: 'not yet classified',
  455. fn: function (){
  456. var self=this;
  457. smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_next", []);
  458. return smalltalk.send(self, "_showCurrentLesson", []);
  459. return self;},
  460. source: unescape('next%0A%09self%20tutorialPlayer%20next.%0A%09%5E%20self%20showCurrentLesson.'),
  461. messageSends: ["next", "tutorialPlayer", "showCurrentLesson"],
  462. referencedClasses: []
  463. }),
  464. smalltalk.ProfStef);
  465. smalltalk.addMethod(
  466. '_previous',
  467. smalltalk.method({
  468. selector: 'previous',
  469. category: 'not yet classified',
  470. fn: function (){
  471. var self=this;
  472. smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_previous", []);
  473. return smalltalk.send(self, "_showCurrentLesson", []);
  474. return self;},
  475. source: unescape('previous%0A%09self%20tutorialPlayer%20previous.%0A%09%5E%20self%20showCurrentLesson.'),
  476. messageSends: ["previous", "tutorialPlayer", "showCurrentLesson"],
  477. referencedClasses: []
  478. }),
  479. smalltalk.ProfStef);
  480. smalltalk.addMethod(
  481. '_widget_',
  482. smalltalk.method({
  483. selector: 'widget:',
  484. category: 'not yet classified',
  485. fn: function (aWidget){
  486. var self=this;
  487. self['@widget']=aWidget;
  488. return self;},
  489. source: unescape('widget%3A%20aWidget%0A%09widget%20%3A%3D%20aWidget'),
  490. messageSends: [],
  491. referencedClasses: []
  492. }),
  493. smalltalk.ProfStef);
  494. smalltalk.addMethod(
  495. '_showCurrentLesson',
  496. smalltalk.method({
  497. selector: 'showCurrentLesson',
  498. category: 'not yet classified',
  499. fn: function (){
  500. var self=this;
  501. var lesson=nil;
  502. lesson=smalltalk.send(smalltalk.send(self, "_tutorialPlayer", []), "_currentLesson", []);
  503. smalltalk.send(smalltalk.send(self['@widget'], "_workspace", []), "_contents_", [smalltalk.send(lesson, "_contents", [])]);
  504. smalltalk.send(smalltalk.send(self['@widget'], "_workspace", []), "_title_", [smalltalk.send(smalltalk.send(smalltalk.send(lesson, "_title", []), "__comma", [" "]), "__comma", [smalltalk.send(self, "_progress", [])])]);
  505. return self;},
  506. source: unescape('showCurrentLesson%0A%09%7C%20lesson%20%7C%0A%09lesson%20%3A%3D%20self%20tutorialPlayer%20currentLesson.%0A%09widget%20workspace%20contents%3A%20lesson%20contents.%0A%09widget%20workspace%20title%3A%20lesson%20title%20%2C%20%27%20%27%20%2C%20self%20progress.'),
  507. messageSends: ["currentLesson", "tutorialPlayer", "contents:", "workspace", "contents", "title:", unescape("%2C"), "title", "progress"],
  508. referencedClasses: []
  509. }),
  510. smalltalk.ProfStef);
  511. smalltalk.ProfStef.klass.iVarNames = ['instance'];
  512. smalltalk.addMethod(
  513. '_first',
  514. smalltalk.method({
  515. selector: 'first',
  516. category: 'not yet classified',
  517. fn: function (){
  518. var self=this;
  519. return smalltalk.send(smalltalk.send(self, "_default", []), "_first", []);
  520. return self;},
  521. source: unescape('first%0A%09%5E%20self%20default%20first.'),
  522. messageSends: ["first", "default"],
  523. referencedClasses: []
  524. }),
  525. smalltalk.ProfStef.klass);
  526. smalltalk.addMethod(
  527. '_default',
  528. smalltalk.method({
  529. selector: 'default',
  530. category: 'not yet classified',
  531. fn: function (){
  532. var self=this;
  533. return (($receiver = self['@instance']) == nil || $receiver == undefined) ? (function(){return self['@instance']=smalltalk.send(self, "_new", []);})() : $receiver;
  534. return self;},
  535. source: unescape('default%20%0A%09%5E%20instance%20ifNil%3A%20%5Binstance%20%3A%3D%20self%20new%5D'),
  536. messageSends: ["ifNil:", "new"],
  537. referencedClasses: []
  538. }),
  539. smalltalk.ProfStef.klass);
  540. smalltalk.addMethod(
  541. '_previous',
  542. smalltalk.method({
  543. selector: 'previous',
  544. category: 'not yet classified',
  545. fn: function (){
  546. var self=this;
  547. return smalltalk.send(smalltalk.send(self, "_default", []), "_previous", []);
  548. return self;},
  549. source: unescape('previous%0A%09%5E%20self%20default%20previous.'),
  550. messageSends: ["previous", "default"],
  551. referencedClasses: []
  552. }),
  553. smalltalk.ProfStef.klass);
  554. smalltalk.addMethod(
  555. '_next',
  556. smalltalk.method({
  557. selector: 'next',
  558. category: 'not yet classified',
  559. fn: function (){
  560. var self=this;
  561. return smalltalk.send(smalltalk.send(self, "_default", []), "_next", []);
  562. return self;},
  563. source: unescape('next%0A%09%5E%20self%20default%20next.'),
  564. messageSends: ["next", "default"],
  565. referencedClasses: []
  566. }),
  567. smalltalk.ProfStef.klass);
  568. smalltalk.addMethod(
  569. '_go',
  570. smalltalk.method({
  571. selector: 'go',
  572. category: 'not yet classified',
  573. fn: function (){
  574. var self=this;
  575. smalltalk.send(self, "_first", []);
  576. return self;},
  577. source: unescape('go%0A%09self%20first.'),
  578. messageSends: ["first"],
  579. referencedClasses: []
  580. }),
  581. smalltalk.ProfStef.klass);
  582. smalltalk.addClass('SmalltalkSyntaxTutorial', smalltalk.AbstractTutorial, [], 'TrySmalltalk');
  583. smalltalk.addMethod(
  584. '_tableOfContents',
  585. smalltalk.method({
  586. selector: 'tableOfContents',
  587. category: 'not yet classified',
  588. fn: function (){
  589. var self=this;
  590. return ["welcome", "doingVSPrinting", "printing", "basicTypesNumbers", "basicTypesString", "basicTypesArray", "messageSyntaxUnary", "messageSyntaxBinary", "messageSyntaxKeyword", "messageSyntaxExecutionOrder", "messageSyntaxExecutionOrderParentheses", "mathematicalPrecedence", "messageSyntaxCascade", "messageSyntaxCascadeShouldNotBeHere", "blocks", "blocksAssignation", "conditionals", "loops", "iterators", "instanciation", "reflection", "reflectionContinued", "debugger", "theEnd"];
  591. return self;},
  592. source: unescape('tableOfContents%0A%5E%20%23%28%09%27welcome%27%0A%09%27doingVSPrinting%27%0A%09%27printing%27%0A%0A%09%27basicTypesNumbers%27%0A%09%22%27basicTypesCharacters%27%22%0A%09%27basicTypesString%27%0A%09%22%27basicTypesSymbol%27%22%0A%09%27basicTypesArray%27%0A%09%22%27basicTypesDynamicArray%27%22%0A%0A%09%27messageSyntaxUnary%27%0A%09%27messageSyntaxBinary%27%0A%09%27messageSyntaxKeyword%27%0A%09%27messageSyntaxExecutionOrder%27%0A%09%27messageSyntaxExecutionOrderParentheses%27%0A%09%27mathematicalPrecedence%27%0A%09%27messageSyntaxCascade%27%0A%09%27messageSyntaxCascadeShouldNotBeHere%27%0A%0A%09%27blocks%27%0A%09%27blocksAssignation%27%0A%09%27conditionals%27%0A%09%27loops%27%0A%09%27iterators%27%0A%0A%09%27instanciation%27%0A%0A%09%27reflection%27%0A%09%27reflectionContinued%27%0A%09%22%27pharoEnvironment%27%22%0A%0A%09%27debugger%27%0A%09%27theEnd%27%20%29'),
  593. messageSends: [],
  594. referencedClasses: []
  595. }),
  596. smalltalk.SmalltalkSyntaxTutorial);
  597. smalltalk.addMethod(
  598. '_basicTypesArray',
  599. smalltalk.method({
  600. selector: 'basicTypesArray',
  601. category: 'not yet classified',
  602. fn: function (){
  603. var self=this;
  604. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Array", unescape("%22Literal%20arrays%20are%20created%20at%20parse%20time%3A%22%0A%0A%23%281%202%203%29.%0A%0A%23%28%201%202%203%20%23%284%205%206%29%29%20size.%0A%0A%23%281%202%204%29%20isEmpty.%0A%0A%23%281%202%203%29%20first.%0A%0A%23%28%27hello%27%20%27Javascript%27%29%20at%3A%202%20put%3A%20%27Smalltalk%27%3B%20yourself.%0A%0AProfStef%20next.")]);
  605. return self;},
  606. source: unescape('basicTypesArray%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Array%27%20%0Acontents%3A%20%0A%27%22Literal%20arrays%20are%20created%20at%20parse%20time%3A%22%0A%0A%23%281%202%203%29.%0A%0A%23%28%201%202%203%20%23%284%205%206%29%29%20size.%0A%0A%23%281%202%204%29%20isEmpty.%0A%0A%23%281%202%203%29%20first.%0A%0A%23%28%27%27hello%27%27%20%27%27Javascript%27%27%29%20at%3A%202%20put%3A%20%27%27Smalltalk%27%27%3B%20yourself.%0A%0AProfStef%20next.%27'),
  607. messageSends: ["title:contents:"],
  608. referencedClasses: [smalltalk.Lesson]
  609. }),
  610. smalltalk.SmalltalkSyntaxTutorial);
  611. smalltalk.addMethod(
  612. '_basicTypesCharacters',
  613. smalltalk.method({
  614. selector: 'basicTypesCharacters',
  615. category: 'not yet classified',
  616. fn: function (){
  617. var self=this;
  618. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Characters", unescape("%22A%20Character%20can%20be%20instantiated%20using%20%24%20operator%3A%22%0A%0A%24A.%0A%0A%24A%20class.%0A%0A%24B%20charCode.%0A%0ACharacter%20cr.%0A%0ACharacter%20space.%0A%0A%22You%20can%20print%20all%20256%20characters%20of%20the%20ASCII%20extended%20set%3A%22%0A%0ACharacter%20allByteCharacters.%0A%0AProfStef%20next.")]);
  619. return self;},
  620. source: unescape('basicTypesCharacters%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Characters%27%20%0Acontents%3A%20%0A%27%22A%20Character%20can%20be%20instantiated%20using%20%24%20operator%3A%22%0A%0A%24A.%0A%0A%24A%20class.%0A%0A%24B%20charCode.%0A%0ACharacter%20cr.%0A%0ACharacter%20space.%0A%0A%22You%20can%20print%20all%20256%20characters%20of%20the%20ASCII%20extended%20set%3A%22%0A%0ACharacter%20allByteCharacters.%0A%0AProfStef%20next.%27'),
  621. messageSends: ["title:contents:"],
  622. referencedClasses: [smalltalk.Lesson]
  623. }),
  624. smalltalk.SmalltalkSyntaxTutorial);
  625. smalltalk.addMethod(
  626. '_basicTypesDynamicArray',
  627. smalltalk.method({
  628. selector: 'basicTypesDynamicArray',
  629. category: 'not yet classified',
  630. fn: function (){
  631. var self=this;
  632. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Dynamic Array", unescape("%22Dynamic%20Arrays%20are%20created%20at%20execution%20time%3A%22%0A%0A%7B%20%282+3%29%20.%20%286*6%29%20%7D.%0A%0A%7B%20%282+3%29%20.%20%286*6%29%20.%20%27hello%27%2C%20%27%20Stef%27%7D%20size.%0A%0A%0A%7B%20ProfStef%20%7D%20first%20next.")]);
  633. return self;},
  634. source: unescape('basicTypesDynamicArray%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Dynamic%20Array%27%20%0Acontents%3A%20%0A%27%22Dynamic%20Arrays%20are%20created%20at%20execution%20time%3A%22%0A%0A%7B%20%282+3%29%20.%20%286*6%29%20%7D.%0A%0A%7B%20%282+3%29%20.%20%286*6%29%20.%20%27%27hello%27%27%2C%20%27%27%20Stef%27%27%7D%20size.%0A%0A%0A%7B%20ProfStef%20%7D%20first%20next.%27'),
  635. messageSends: ["title:contents:"],
  636. referencedClasses: [smalltalk.Lesson]
  637. }),
  638. smalltalk.SmalltalkSyntaxTutorial);
  639. smalltalk.addMethod(
  640. '_basicTypesNumbers',
  641. smalltalk.method({
  642. selector: 'basicTypesNumbers',
  643. category: 'not yet classified',
  644. fn: function (){
  645. var self=this;
  646. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Numbers", unescape("%22You%20now%20know%20how%20to%20execute%20Smalltalk%20code.%20%0A%0ANow%20let%27s%20talk%20about%20basic%20objects.%0A%0A1%2C%202%2C%20100%2C%202/3%20...%20are%20Numbers%2C%20and%20respond%20to%20many%20messages%20evaluating%20mathematical%20expressions.%0AEvaluate%20these%20ones%3A%22%0A%0A2.%0A%0A%281/3%29.%0A%0A%281/3%29%20+%20%284/5%29.%0A%0A%2818/5%29%20rounded.%0A%0A1%20class.%0A%0A1%20negated.%0A%0A1%20negated%20negated.%0A%0A%281%20+%203%29%20odd.%0A%0AProfStef%20next.")]);
  647. return self;},
  648. source: unescape('basicTypesNumbers%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Numbers%27%20%0Acontents%3A%20%0A%27%22You%20now%20know%20how%20to%20execute%20Smalltalk%20code.%20%0A%0ANow%20let%27%27s%20talk%20about%20basic%20objects.%0A%0A1%2C%202%2C%20100%2C%202/3%20...%20are%20Numbers%2C%20and%20respond%20to%20many%20messages%20evaluating%20mathematical%20expressions.%0AEvaluate%20these%20ones%3A%22%0A%0A2.%0A%0A%281/3%29.%0A%0A%281/3%29%20+%20%284/5%29.%0A%0A%2818/5%29%20rounded.%0A%0A1%20class.%0A%0A1%20negated.%0A%0A1%20negated%20negated.%0A%0A%281%20+%203%29%20odd.%0A%0AProfStef%20next.%27'),
  649. messageSends: ["title:contents:"],
  650. referencedClasses: [smalltalk.Lesson]
  651. }),
  652. smalltalk.SmalltalkSyntaxTutorial);
  653. smalltalk.addMethod(
  654. '_basicTypesString',
  655. smalltalk.method({
  656. selector: 'basicTypesString',
  657. category: 'not yet classified',
  658. fn: function (){
  659. var self=this;
  660. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Strings", unescape("%22A%20String%20is%20a%20collection%20of%20characters.%20Use%20single%20quotes%20to%20create%20a%20String%20object.%20Print%20these%20expressions%3A%22%0A%0A%27ProfStef%27.%0A%0A%27ProfStef%27%20size.%0A%0A%27abc%27%20asUppercase.%0A%0A%27Hello%20World%27%20reversed.%20%0A%0A%22You%20can%20access%20each%20character%20using%20at%3A%20message%22%0A%0A%27ProfStef%27%20at%3A%201.%0A%0A%22String%20concatenation%20uses%20the%20comma%20operator%3A%22%0A%0A%27ProfStef%27%2C%20%27%20is%20cool%27.%0A%0AProfStef%20next.")]);
  661. return self;},
  662. source: unescape('basicTypesString%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Strings%27%20%0Acontents%3A%20%0A%27%22A%20String%20is%20a%20collection%20of%20characters.%20Use%20single%20quotes%20to%20create%20a%20String%20object.%20Print%20these%20expressions%3A%22%0A%0A%27%27ProfStef%27%27.%0A%0A%27%27ProfStef%27%27%20size.%0A%0A%27%27abc%27%27%20asUppercase.%0A%0A%27%27Hello%20World%27%27%20reversed.%20%0A%0A%22You%20can%20access%20each%20character%20using%20at%3A%20message%22%0A%0A%27%27ProfStef%27%27%20at%3A%201.%0A%0A%22String%20concatenation%20uses%20the%20comma%20operator%3A%22%0A%0A%27%27ProfStef%27%27%2C%20%27%27%20is%20cool%27%27.%0A%0AProfStef%20next.%27'),
  663. messageSends: ["title:contents:"],
  664. referencedClasses: [smalltalk.Lesson]
  665. }),
  666. smalltalk.SmalltalkSyntaxTutorial);
  667. smalltalk.addMethod(
  668. '_basicTypesSymbol',
  669. smalltalk.method({
  670. selector: 'basicTypesSymbol',
  671. category: 'not yet classified',
  672. fn: function (){
  673. var self=this;
  674. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Basic types: Symbols", unescape("%22A%20Symbol%20is%20a%20String%20which%20is%20guaranteed%20to%20be%20globally%20unique.%20%0A%0AThere%20is%20one%20and%20only%20one%20Symbol%20%23ProfStef.%20There%20may%20be%20several%20%27ProfStef%27%20String%20objects.%0A%0A%28Message%20%3D%3D%20returns%20true%20if%20the%20two%20objects%20are%20the%20SAME%29%22%0A%0A%27ProfStef%27%20asSymbol.%0A%0A%23ProfStef%20asString.%0A%0A%282%20asString%29%20%3D%3D%20%282%20asString%29.%0A%0A%282%20asString%29%20asSymbol%20%3D%3D%20%282%20asString%29%20asSymbol.%0A%0A%0A%28Smalltalk%20at%3A%20%23ProfStef%29%20next.")]);
  675. return self;},
  676. source: unescape('basicTypesSymbol%0A%09%5E%20Lesson%0Atitle%3A%20%27Basic%20types%3A%20Symbols%27%20%0Acontents%3A%20%0A%27%22A%20Symbol%20is%20a%20String%20which%20is%20guaranteed%20to%20be%20globally%20unique.%20%0A%0AThere%20is%20one%20and%20only%20one%20Symbol%20%23ProfStef.%20There%20may%20be%20several%20%27%27ProfStef%27%27%20String%20objects.%0A%0A%28Message%20%3D%3D%20returns%20true%20if%20the%20two%20objects%20are%20the%20SAME%29%22%0A%0A%27%27ProfStef%27%27%20asSymbol.%0A%0A%23ProfStef%20asString.%0A%0A%282%20asString%29%20%3D%3D%20%282%20asString%29.%0A%0A%282%20asString%29%20asSymbol%20%3D%3D%20%282%20asString%29%20asSymbol.%0A%0A%0A%28Smalltalk%20at%3A%20%23ProfStef%29%20next.%27'),
  677. messageSends: ["title:contents:"],
  678. referencedClasses: [smalltalk.Lesson]
  679. }),
  680. smalltalk.SmalltalkSyntaxTutorial);
  681. smalltalk.addMethod(
  682. '_blocks',
  683. smalltalk.method({
  684. selector: 'blocks',
  685. category: 'not yet classified',
  686. fn: function (){
  687. var self=this;
  688. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Blocks", unescape("%22Cascade%20is%20cool%20%21%20Let%27s%20talk%20about%20blocks.%0A%0ABlocks%20are%20anonymous%20methods%20that%20can%20be%20stored%20into%20variables%20and%20executed%20on%20demand.%0A%0ABlocks%20are%20delimited%20by%20square%20brackets%3A%20%5B%5D%22%0A%0A%5BTranscript%20open%5D.%0A%0A%22does%20not%20open%20a%20Transcript%20because%20the%20block%20is%20not%20executed.%0A%0AHere%20is%20a%20block%20that%20adds%202%20to%20its%20argument%20%28its%20argument%20is%20named%20x%29%3A%22%0A%0A%5B%3Ax%20%7C%20x+2%5D.%0A%0A%22We%20can%20execute%20a%20block%20by%20sending%20it%20value%20messages.%22%0A%0A%5B%3Ax%20%7C%20x+2%5D%20value%3A%205.%0A%0A%5BTranscript%20open%5D%20value.%0A%0A%5B%3Ax%20%7C%20x+2%5D%20value%3A%2010.%0A%0A%5B%3Ax%20%3Ay%7C%20x%20+%20y%5D%20value%3A3%20value%3A5.%0A%0A%5BProfStef%20next%5D%20value.")]);
  689. return self;},
  690. source: unescape('blocks%0A%09%5E%20Lesson%0Atitle%3A%20%27Blocks%27%20%0Acontents%3A%20%0A%27%22Cascade%20is%20cool%20%21%20Let%27%27s%20talk%20about%20blocks.%0A%0ABlocks%20are%20anonymous%20methods%20that%20can%20be%20stored%20into%20variables%20and%20executed%20on%20demand.%0A%0ABlocks%20are%20delimited%20by%20square%20brackets%3A%20%5B%5D%22%0A%0A%5BTranscript%20open%5D.%0A%0A%22does%20not%20open%20a%20Transcript%20because%20the%20block%20is%20not%20executed.%0A%0AHere%20is%20a%20block%20that%20adds%202%20to%20its%20argument%20%28its%20argument%20is%20named%20x%29%3A%22%0A%0A%5B%3Ax%20%7C%20x+2%5D.%0A%0A%22We%20can%20execute%20a%20block%20by%20sending%20it%20value%20messages.%22%0A%0A%5B%3Ax%20%7C%20x+2%5D%20value%3A%205.%0A%0A%5BTranscript%20open%5D%20value.%0A%0A%5B%3Ax%20%7C%20x+2%5D%20value%3A%2010.%0A%0A%5B%3Ax%20%3Ay%7C%20x%20+%20y%5D%20value%3A3%20value%3A5.%0A%0A%5BProfStef%20next%5D%20value.%27'),
  691. messageSends: ["title:contents:"],
  692. referencedClasses: [smalltalk.Lesson]
  693. }),
  694. smalltalk.SmalltalkSyntaxTutorial);
  695. smalltalk.addMethod(
  696. '_blocksAssignation',
  697. smalltalk.method({
  698. selector: 'blocksAssignation',
  699. category: 'not yet classified',
  700. fn: function (){
  701. var self=this;
  702. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Block assignation", unescape("%22Blocks%20can%20be%20assigned%20to%20a%20variable%20then%20executed%20later.%0A%0ANote%20that%20%7Cb%7C%20is%20the%20declaration%20of%20a%20variable%20named%20%27b%27%20and%20that%20%27%3A%3D%27%20assigns%20a%20value%20to%20a%20variable.%0A%0ASelect%20the%20three%20lines%20then%20Print%20It%3A%22%0A%0A%7Cb%7C%0Ab%20%3A%3D%20%5B%3Ax%20%7C%20x+2%5D.%0Ab%20value%3A%2012.%0A%0A%0AProfStef%20next.")]);
  703. return self;},
  704. source: unescape('blocksAssignation%0A%09%5E%20Lesson%0Atitle%3A%20%27Block%20assignation%27%20%0Acontents%3A%20%0A%27%22Blocks%20can%20be%20assigned%20to%20a%20variable%20then%20executed%20later.%0A%0ANote%20that%20%7Cb%7C%20is%20the%20declaration%20of%20a%20variable%20named%20%27%27b%27%27%20and%20that%20%27%27%3A%3D%27%27%20assigns%20a%20value%20to%20a%20variable.%0A%0ASelect%20the%20three%20lines%20then%20Print%20It%3A%22%0A%0A%7Cb%7C%0Ab%20%3A%3D%20%5B%3Ax%20%7C%20x+2%5D.%0Ab%20value%3A%2012.%0A%0A%0AProfStef%20next.%27'),
  705. messageSends: ["title:contents:"],
  706. referencedClasses: [smalltalk.Lesson]
  707. }),
  708. smalltalk.SmalltalkSyntaxTutorial);
  709. smalltalk.addMethod(
  710. '_conditionals',
  711. smalltalk.method({
  712. selector: 'conditionals',
  713. category: 'not yet classified',
  714. fn: function (){
  715. var self=this;
  716. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Conditionals", unescape("%22Conditionals%20are%20just%20messages%20sent%20to%20Boolean%20objects%22%0A%0A1%20%3C%202%0A%20%20ifTrue%3A%20%5B100%5D%0A%20%20ifFalse%3A%20%5B42%5D.%0A%0A%22Here%20the%20message%20is%20ifTrue%3AifFalse%0A%0ATry%20this%3A%22%0A%0ATranscript%20open.%0A%0A3%20%3E%2010%20%0A%09ifTrue%3A%20%5BTranscript%20show%3A%20%27maybe%20there%27%27s%20a%20bug%20....%27%5D%0A%09ifFalse%3A%20%5BTranscript%20show%3A%20%27No%20%3A%203%20is%20less%20than%2010%27%5D.%0A%0A3%20%3D%203%20ifTrue%3A%20%5BProfStef%20next%5D.")]);
  717. return self;},
  718. source: unescape('conditionals%0A%09%5E%20Lesson%0Atitle%3A%20%27Conditionals%27%20%0Acontents%3A%20%0A%27%22Conditionals%20are%20just%20messages%20sent%20to%20Boolean%20objects%22%0A%0A1%20%3C%202%0A%20%20ifTrue%3A%20%5B100%5D%0A%20%20ifFalse%3A%20%5B42%5D.%0A%0A%22Here%20the%20message%20is%20ifTrue%3AifFalse%0A%0ATry%20this%3A%22%0A%0ATranscript%20open.%0A%0A3%20%3E%2010%20%0A%09ifTrue%3A%20%5BTranscript%20show%3A%20%27%27maybe%20there%27%27%27%27s%20a%20bug%20....%27%27%5D%0A%09ifFalse%3A%20%5BTranscript%20show%3A%20%27%27No%20%3A%203%20is%20less%20than%2010%27%27%5D.%0A%0A3%20%3D%203%20ifTrue%3A%20%5BProfStef%20next%5D.%27.'),
  719. messageSends: ["title:contents:"],
  720. referencedClasses: [smalltalk.Lesson]
  721. }),
  722. smalltalk.SmalltalkSyntaxTutorial);
  723. smalltalk.addMethod(
  724. '_debugger',
  725. smalltalk.method({
  726. selector: 'debugger',
  727. category: 'not yet classified',
  728. fn: function (){
  729. var self=this;
  730. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Debugger", unescape("%22The%20Debugger%20may%20be%20the%20most%20famous%20tool%20of%20Smalltalk%20environments.%20It%20will%20open%20as%20soon%20as%20an%20unmanaged%20Exception%20occurs.%20%0A%0AThe%20following%20code%20will%20open%20the%20debugger.%0A%0A***This%20should%20be%20rethought%20completely***%22%0A%0A%0A%20")]);
  731. return self;},
  732. source: unescape('debugger%0A%09%5E%20Lesson%0Atitle%3A%20%27Debugger%27%20%0Acontents%3A%20%27%22The%20Debugger%20may%20be%20the%20most%20famous%20tool%20of%20Smalltalk%20environments.%20It%20will%20open%20as%20soon%20as%20an%20unmanaged%20Exception%20occurs.%20%0A%0AThe%20following%20code%20will%20open%20the%20debugger.%0A%0A***This%20should%20be%20rethought%20completely***%22%0A%0A%0A%20%27'),
  733. messageSends: ["title:contents:"],
  734. referencedClasses: [smalltalk.Lesson]
  735. }),
  736. smalltalk.SmalltalkSyntaxTutorial);
  737. smalltalk.addMethod(
  738. '_doingVSPrinting',
  739. smalltalk.method({
  740. selector: 'doingVSPrinting',
  741. category: 'not yet classified',
  742. fn: function (){
  743. var self=this;
  744. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Doing VS Printing: Doing", unescape("%22Cool%20%21%20%28I%20like%20to%20say%20Cooool%20%3A%29%20%29.%20You%27ve%20just%20executed%20a%20Smalltalk%20expression.%20More%20precisely%2C%20you%20sent%20the%20message%20%27next%27%20to%0AProfStef%20class%20%28it%27s%20me%20%21%29.%0A%0ANote%20you%20can%20run%20this%20tutorial%20again%20by%20evaluating%3A%20%27ProfStef%20go%27.%20%0A%27ProfStef%20previous%27%20returns%20to%20the%20previous%20lesson.%0A%0AYou%20can%20also%20Do%20It%20using%20the%20keyboard%20shortcut%20%27CTRL%20d%27%0A%0ATry%20to%20evaluate%20this%20expression%3A%22%0A%0Awindow%20alert%3A%20%27hello%20world%21%27.%0A%0A%22Then%20go%20to%20the%20next%20lesson%3A%22%0A%0AProfStef%20next.")]);
  745. return self;},
  746. source: unescape('doingVSPrinting%20%0A%09%5E%20Lesson%0Atitle%3A%20%27Doing%20VS%20Printing%3A%20Doing%27%20%0Acontents%3A%20%0A%27%22Cool%20%21%20%28I%20like%20to%20say%20Cooool%20%3A%29%20%29.%20You%27%27ve%20just%20executed%20a%20Smalltalk%20expression.%20More%20precisely%2C%20you%20sent%20the%20message%20%27%27next%27%27%20to%0AProfStef%20class%20%28it%27%27s%20me%20%21%29.%0A%0ANote%20you%20can%20run%20this%20tutorial%20again%20by%20evaluating%3A%20%27%27ProfStef%20go%27%27.%20%0A%27%27ProfStef%20previous%27%27%20returns%20to%20the%20previous%20lesson.%0A%0AYou%20can%20also%20Do%20It%20using%20the%20keyboard%20shortcut%20%27%27CTRL%20d%27%27%0A%0ATry%20to%20evaluate%20this%20expression%3A%22%0A%0Awindow%20alert%3A%20%27%27hello%20world%21%27%27.%0A%0A%22Then%20go%20to%20the%20next%20lesson%3A%22%0A%0AProfStef%20next.%27'),
  747. messageSends: ["title:contents:"],
  748. referencedClasses: [smalltalk.Lesson]
  749. }),
  750. smalltalk.SmalltalkSyntaxTutorial);
  751. smalltalk.addMethod(
  752. '_instanciation',
  753. smalltalk.method({
  754. selector: 'instanciation',
  755. category: 'not yet classified',
  756. fn: function (){
  757. var self=this;
  758. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Instanciation", unescape("%22Objects%20are%20instances%20of%20their%20class.%20Usually%2C%20we%20send%20the%20message%20%23new%20to%20a%20class%20for%20creating%20an%20instance%20of%20this%20class.%0A%0AFor%20example%2C%20let%27s%20create%20an%20instance%20of%20the%20class%20Array%3A%22%0A%0AArray%20new%0A%09add%3A%20%27Some%20text%27%3B%0A%09add%3A%203.%3B%0A%09yourself.%0A%0A%22See%20the%20array%20we%27ve%20created%3F%20Actually%2C%20%23%28%27Some%20text%27%203%29%20is%20just%20a%20shorthand%20for%20instantiating%20arrays.%22%0A%0A%22If%20we%20use%20a%20variable%20to%20keep%20track%20of%20this%20object%2C%20we%27ll%20be%20able%20to%20do%20stuff%20with%20it.%22%0A%0A%22The%20following%20code%20must%20be%20ran%20all%20at%20one%2C%20as%20the%20%27anArray%27%20variable%20will%20cease%20to%20exist%20once%20the%20execution%20finishes%3A%22%0A%0A%7CanArray%7C%0A%0AanArray%20%3A%3D%20Array%20new%0A%09add%3A%20%27Some%20text%27%3B%0A%09add%3A%203%3B%0A%09yourself%3B%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%0AanArray%20remove%3A%203.%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%0AanArray%20add%3A%20%27Some%20more%20text%21%27.%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%09%0A%22I%27ll%20put%20myself%20in%20an%20instance%20of%20a%20class%20named%20Dictionary%20and%20go%20to%20the%20next%20lesson%3A%22%0A%0A%28%28Dictionary%20new%20add%3A%20%28%27move%20on%21%27%20-%3E%20ProfStef%29%29%20at%3A%20%27move%20on%21%27%29%20next")]);
  759. return self;},
  760. source: unescape('instanciation%0A%09%5E%20Lesson%0Atitle%3A%20%27Instanciation%27%20%0Acontents%3A%20%0A%27%22Objects%20are%20instances%20of%20their%20class.%20Usually%2C%20we%20send%20the%20message%20%23new%20to%20a%20class%20for%20creating%20an%20instance%20of%20this%20class.%0A%0AFor%20example%2C%20let%27%27s%20create%20an%20instance%20of%20the%20class%20Array%3A%22%0A%0AArray%20new%0A%09add%3A%20%27%27Some%20text%27%27%3B%0A%09add%3A%203.%3B%0A%09yourself.%0A%0A%22See%20the%20array%20we%27%27ve%20created%3F%20Actually%2C%20%23%28%27%27Some%20text%27%27%203%29%20is%20just%20a%20shorthand%20for%20instantiating%20arrays.%22%0A%0A%22If%20we%20use%20a%20variable%20to%20keep%20track%20of%20this%20object%2C%20we%27%27ll%20be%20able%20to%20do%20stuff%20with%20it.%22%0A%0A%22The%20following%20code%20must%20be%20ran%20all%20at%20one%2C%20as%20the%20%27%27anArray%27%27%20variable%20will%20cease%20to%20exist%20once%20the%20execution%20finishes%3A%22%0A%0A%7CanArray%7C%0A%0AanArray%20%3A%3D%20Array%20new%0A%09add%3A%20%27%27Some%20text%27%27%3B%0A%09add%3A%203%3B%0A%09yourself%3B%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%0AanArray%20remove%3A%203.%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%0AanArray%20add%3A%20%27%27Some%20more%20text%21%27%27.%0A%0ATranscript%20show%3A%20anArray%3B%20cr.%0A%09%0A%22I%27%27ll%20put%20myself%20in%20an%20instance%20of%20a%20class%20named%20Dictionary%20and%20go%20to%20the%20next%20lesson%3A%22%0A%0A%28%28Dictionary%20new%20add%3A%20%28%27%27move%20on%21%27%27%20-%3E%20ProfStef%29%29%20at%3A%20%27%27move%20on%21%27%27%29%20next%27'),
  761. messageSends: ["title:contents:"],
  762. referencedClasses: [smalltalk.Lesson]
  763. }),
  764. smalltalk.SmalltalkSyntaxTutorial);
  765. smalltalk.addMethod(
  766. '_iterators',
  767. smalltalk.method({
  768. selector: 'iterators',
  769. category: 'not yet classified',
  770. fn: function (){
  771. var self=this;
  772. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Iterators", unescape("%22The%20message%20do%3A%20is%20sent%20to%20a%20collection%20of%20objects%20%28Array%2C%20Dictionary%2C%20String%2C%20etc%29%2C%20evaluating%20the%20block%20for%20each%20element.%0A%0AHere%20we%20want%20to%20print%20all%20the%20numbers%20on%20the%20Transcript%20%28a%20console%29%22%0A%0A%23%2811%2038%203%20-2%2010%29%20do%3A%20%5B%3Aeach%20%7C%0A%20%20%20%20%20Transcript%20show%3A%20each%20printString%3B%20cr%5D.%0A%0A%22Some%20other%20really%20nice%20iterators%22%0A%0A%23%2811%2038%203%20-2%2010%29%20collect%3A%20%5B%3Aeach%20%7C%20each%20negated%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20collect%3A%20%5B%3Aeach%20%7C%20each%20odd%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20select%3A%20%5B%3Aeach%20%7C%20each%20odd%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20select%3A%20%5B%3Aeach%20%7C%20each%20%3E%2010%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20reject%3A%20%5B%3Aeach%20%7C%20each%20%3E%2010%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20%0A%20%20%20%20%20do%3A%20%5B%3Aeach%20%7C%20Transcript%20show%3A%20each%20printString%5D%0A%20%20%20%20%20separatedBy%3A%20%5BTranscript%20show%3A%20%27.%27%5D.%0A%0A%0A%28Smalltalk%20current%20classes%20select%3A%20%5B%3AeachClass%20%7C%20eachClass%20name%20%3D%20%27ProfStef%27%5D%29%20do%3A%20%5B%3AeachProfstef%20%7C%20eachProfstef%20next%5D.")]);
  773. return self;},
  774. source: unescape('iterators%0A%09%5E%20Lesson%0Atitle%3A%20%27Iterators%27%20%0Acontents%3A%20%0A%27%22The%20message%20do%3A%20is%20sent%20to%20a%20collection%20of%20objects%20%28Array%2C%20Dictionary%2C%20String%2C%20etc%29%2C%20evaluating%20the%20block%20for%20each%20element.%0A%0AHere%20we%20want%20to%20print%20all%20the%20numbers%20on%20the%20Transcript%20%28a%20console%29%22%0A%0A%23%2811%2038%203%20-2%2010%29%20do%3A%20%5B%3Aeach%20%7C%0A%20%20%20%20%20Transcript%20show%3A%20each%20printString%3B%20cr%5D.%0A%0A%22Some%20other%20really%20nice%20iterators%22%0A%0A%23%2811%2038%203%20-2%2010%29%20collect%3A%20%5B%3Aeach%20%7C%20each%20negated%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20collect%3A%20%5B%3Aeach%20%7C%20each%20odd%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20select%3A%20%5B%3Aeach%20%7C%20each%20odd%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20select%3A%20%5B%3Aeach%20%7C%20each%20%3E%2010%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20reject%3A%20%5B%3Aeach%20%7C%20each%20%3E%2010%5D.%0A%0A%23%2811%2038%203%20-2%2010%29%20%0A%20%20%20%20%20do%3A%20%5B%3Aeach%20%7C%20Transcript%20show%3A%20each%20printString%5D%0A%20%20%20%20%20separatedBy%3A%20%5BTranscript%20show%3A%20%27%27.%27%27%5D.%0A%0A%0A%28Smalltalk%20current%20classes%20select%3A%20%5B%3AeachClass%20%7C%20eachClass%20name%20%3D%20%27%27ProfStef%27%27%5D%29%20do%3A%20%5B%3AeachProfstef%20%7C%20eachProfstef%20next%5D.%27'),
  775. messageSends: ["title:contents:"],
  776. referencedClasses: [smalltalk.Lesson]
  777. }),
  778. smalltalk.SmalltalkSyntaxTutorial);
  779. smalltalk.addMethod(
  780. '_loops',
  781. smalltalk.method({
  782. selector: 'loops',
  783. category: 'not yet classified',
  784. fn: function (){
  785. var self=this;
  786. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Loops", unescape("%22Loops%20are%20high-level%20collection%20iterators%2C%20implemented%20as%20regular%20methods.%22%0A%0A%22Basic%20loops%3A%0A%20%20to%3Ado%3A%0A%20%20to%3Aby%3Ado%22%0A%0A1%20to%3A%20100%20do%3A%0A%20%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%20%5D.%0A%0A1%20to%3A%20100%20by%3A%203%20do%3A%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%5D.%0A%0A100%20to%3A%200%20by%3A%20-2%20do%3A%20%0A%20%20%20%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%5D.%0A%0A1%20to%3A%201%20do%3A%20%5B%3Ai%20%7C%20ProfStef%20next%5D.")]);
  787. return self;},
  788. source: unescape('loops%0A%09%5E%20Lesson%0Atitle%3A%20%27Loops%27%20%0Acontents%3A%20%0A%27%22Loops%20are%20high-level%20collection%20iterators%2C%20implemented%20as%20regular%20methods.%22%0A%0A%22Basic%20loops%3A%0A%20%20to%3Ado%3A%0A%20%20to%3Aby%3Ado%22%0A%0A1%20to%3A%20100%20do%3A%0A%20%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%20%5D.%0A%0A1%20to%3A%20100%20by%3A%203%20do%3A%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%5D.%0A%0A100%20to%3A%200%20by%3A%20-2%20do%3A%20%0A%20%20%20%20%5B%3Ai%20%7C%20Transcript%20show%3A%20i%20asString%3B%20cr%5D.%0A%0A1%20to%3A%201%20do%3A%20%5B%3Ai%20%7C%20ProfStef%20next%5D.%27'),
  789. messageSends: ["title:contents:"],
  790. referencedClasses: [smalltalk.Lesson]
  791. }),
  792. smalltalk.SmalltalkSyntaxTutorial);
  793. smalltalk.addMethod(
  794. '_mathematicalPrecedence',
  795. smalltalk.method({
  796. selector: 'mathematicalPrecedence',
  797. category: 'not yet classified',
  798. fn: function (){
  799. var self=this;
  800. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Mathematical precedence", unescape("%22Traditional%20precedence%20rules%20from%20mathematics%20do%20not%20follow%20in%20Smalltalk.%22%0A%0A2%20*%2010%20+%202.%0A%0A%22Here%20the%20message%20*%20is%20sent%20to%202%2C%20which%20answers%2020%2C%20then%2020%20receive%20the%20message%20+%0A%0ARemember%20that%20all%20messages%20always%20follow%20a%20simple%20left-to-right%20precedence%20rule%2C%20*%20without%20exceptions%20*.%22%0A%0A2%20+%202%20*%2010.%0A%0A2%20+%20%282%20*%2010%29.%0A%0A8%20-%205%20/%202.%0A%0A%288%20-%205%29%20/%202.%0A%0A8%20-%20%285%20/%202%29.%0A%0AProfStef%20next.")]);
  801. return self;},
  802. source: unescape('mathematicalPrecedence%0A%09%5E%20Lesson%0Atitle%3A%20%27Mathematical%20precedence%27%0Acontents%3A%20%0A%27%22Traditional%20precedence%20rules%20from%20mathematics%20do%20not%20follow%20in%20Smalltalk.%22%0A%0A2%20*%2010%20+%202.%0A%0A%22Here%20the%20message%20*%20is%20sent%20to%202%2C%20which%20answers%2020%2C%20then%2020%20receive%20the%20message%20+%0A%0ARemember%20that%20all%20messages%20always%20follow%20a%20simple%20left-to-right%20precedence%20rule%2C%20*%20without%20exceptions%20*.%22%0A%0A2%20+%202%20*%2010.%0A%0A2%20+%20%282%20*%2010%29.%0A%0A8%20-%205%20/%202.%0A%0A%288%20-%205%29%20/%202.%0A%0A8%20-%20%285%20/%202%29.%0A%0AProfStef%20next.%27'),
  803. messageSends: ["title:contents:"],
  804. referencedClasses: [smalltalk.Lesson]
  805. }),
  806. smalltalk.SmalltalkSyntaxTutorial);
  807. smalltalk.addMethod(
  808. '_messageSyntaxBinary',
  809. smalltalk.method({
  810. selector: 'messageSyntaxBinary',
  811. category: 'not yet classified',
  812. fn: function (){
  813. var self=this;
  814. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Binary messages", unescape("%22Binary%20messages%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20+%20anotherObject%22%0A%0A3%20*%202.%0A%0ADate%20today%20year%20%3D%202011.%0A%0Afalse%20%7C%20false.%0A%0Atrue%20%26%20true.%0A%0Atrue%20%26%20false.%0A%0A10%20@%20100.%0A%0A10%20%3C%3D%2012.%0A%0A%27ab%27%2C%20%27cd%27.%0A%0AProfStef%20next.")]);
  815. return self;},
  816. source: unescape('messageSyntaxBinary%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Binary%20messages%27%20%0Acontents%3A%20%0A%27%22Binary%20messages%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20+%20anotherObject%22%0A%0A3%20*%202.%0A%0ADate%20today%20year%20%3D%202011.%0A%0Afalse%20%7C%20false.%0A%0Atrue%20%26%20true.%0A%0Atrue%20%26%20false.%0A%0A10%20@%20100.%0A%0A10%20%3C%3D%2012.%0A%0A%27%27ab%27%27%2C%20%27%27cd%27%27.%0A%0AProfStef%20next.%27'),
  817. messageSends: ["title:contents:"],
  818. referencedClasses: [smalltalk.Lesson]
  819. }),
  820. smalltalk.SmalltalkSyntaxTutorial);
  821. smalltalk.addMethod(
  822. '_messageSyntaxCascade',
  823. smalltalk.method({
  824. selector: 'messageSyntaxCascade',
  825. category: 'not yet classified',
  826. fn: function (){
  827. var self=this;
  828. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Cascade", unescape("%22%3B%20is%20the%20cascade%20operator.%20It%27s%20useful%20to%20send%20message%20to%20the%20SAME%20receiver%0AOpen%20a%20Transcript%20%28console%29%3A%22%0A%0ATranscript%20open.%0A%0A%22Then%3A%22%0A%0ATranscript%20show%3A%20%27hello%27.%0ATranscript%20show%3A%20%27Smalltalk%27.%0ATranscript%20cr.%0A%0A%22is%20equivalent%20to%3A%22%0A%0ATranscript%20%0A%09%20%20%20show%3A%20%27hello%27%3B%0A%09%20%20%20show%3A%20%27Smalltalk%27%20%3B%0A%09%20%20%20cr.%0A%0A%22You%20can%20close%20the%20development%20tools%20by%20clicking%20on%20the%20red%20circle%20with%20a%20cross%20at%20the%20bottom%20left%20of%20the%20website.%0ATry%20to%20go%20to%20the%20next%20lesson%20with%20a%20cascade%20of%20two%20%27next%27%20messages%3A%22%0A%0AProfStef")]);
  829. return self;},
  830. source: unescape('messageSyntaxCascade%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Cascade%27%20%0Acontents%3A%20%0A%27%22%3B%20is%20the%20cascade%20operator.%20It%27%27s%20useful%20to%20send%20message%20to%20the%20SAME%20receiver%0AOpen%20a%20Transcript%20%28console%29%3A%22%0A%0ATranscript%20open.%0A%0A%22Then%3A%22%0A%0ATranscript%20show%3A%20%27%27hello%27%27.%0ATranscript%20show%3A%20%27%27Smalltalk%27%27.%0ATranscript%20cr.%0A%0A%22is%20equivalent%20to%3A%22%0A%0ATranscript%20%0A%09%20%20%20show%3A%20%27%27hello%27%27%3B%0A%09%20%20%20show%3A%20%27%27Smalltalk%27%27%20%3B%0A%09%20%20%20cr.%0A%0A%22You%20can%20close%20the%20development%20tools%20by%20clicking%20on%20the%20red%20circle%20with%20a%20cross%20at%20the%20bottom%20left%20of%20the%20website.%0ATry%20to%20go%20to%20the%20next%20lesson%20with%20a%20cascade%20of%20two%20%27%27next%27%27%20messages%3A%22%0A%0AProfStef%27.'),
  831. messageSends: ["title:contents:"],
  832. referencedClasses: [smalltalk.Lesson]
  833. }),
  834. smalltalk.SmalltalkSyntaxTutorial);
  835. smalltalk.addMethod(
  836. '_messageSyntaxCascadeShouldNotBeHere',
  837. smalltalk.method({
  838. selector: 'messageSyntaxCascadeShouldNotBeHere',
  839. category: 'not yet classified',
  840. fn: function (){
  841. var self=this;
  842. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", [unescape("Lost%20%3F"), unescape("%22Hey%2C%20you%20should%20not%20be%20here%20%21%21%20%0A%0AGo%20back%20and%20use%20a%20cascade%20%21%22%0A%0AProfStef%20previous.")]);
  843. return self;},
  844. source: unescape('messageSyntaxCascadeShouldNotBeHere%0A%09%5E%20Lesson%0Atitle%3A%20%27Lost%20%3F%27%20%0Acontents%3A%20%0A%27%22Hey%2C%20you%20should%20not%20be%20here%20%21%21%20%0A%0AGo%20back%20and%20use%20a%20cascade%20%21%22%0A%0AProfStef%20previous.%27.'),
  845. messageSends: ["title:contents:"],
  846. referencedClasses: [smalltalk.Lesson]
  847. }),
  848. smalltalk.SmalltalkSyntaxTutorial);
  849. smalltalk.addMethod(
  850. '_messageSyntaxExecutionOrder',
  851. smalltalk.method({
  852. selector: 'messageSyntaxExecutionOrder',
  853. category: 'not yet classified',
  854. fn: function (){
  855. var self=this;
  856. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Execution order", unescape("%22Unary%20messages%20are%20executed%20first%2C%20then%20binary%20messages%20and%20finally%20keyword%20messages%3A%0A%20%20%20%20Unary%20%3E%20Binary%20%3E%20Keywords%22%0A%0A2.5%20+%203.8%20rounded.%0A%0A3%20max%3A%202%20+%202.%0A%20%20%0A%280@0%29%20class.%0A%0A0@0%20x%3A%20100.%0A%0A%280@0%20x%3A%20100%29%20class.%0A%0A%22Between%20messages%20of%20similar%20precedence%2C%20expressions%20are%20executed%20from%20left%20to%20right%22%0A%0A-12345%20negated%20asString%20reversed.%0A%0AProfStef%20next.")]);
  857. return self;},
  858. source: unescape('messageSyntaxExecutionOrder%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Execution%20order%27%20%0Acontents%3A%20%0A%27%22Unary%20messages%20are%20executed%20first%2C%20then%20binary%20messages%20and%20finally%20keyword%20messages%3A%0A%20%20%20%20Unary%20%3E%20Binary%20%3E%20Keywords%22%0A%0A2.5%20+%203.8%20rounded.%0A%0A3%20max%3A%202%20+%202.%0A%20%20%0A%280@0%29%20class.%0A%0A0@0%20x%3A%20100.%0A%0A%280@0%20x%3A%20100%29%20class.%0A%0A%22Between%20messages%20of%20similar%20precedence%2C%20expressions%20are%20executed%20from%20left%20to%20right%22%0A%0A-12345%20negated%20asString%20reversed.%0A%0AProfStef%20next.%27'),
  859. messageSends: ["title:contents:"],
  860. referencedClasses: [smalltalk.Lesson]
  861. }),
  862. smalltalk.SmalltalkSyntaxTutorial);
  863. smalltalk.addMethod(
  864. '_messageSyntaxExecutionOrderParentheses',
  865. smalltalk.method({
  866. selector: 'messageSyntaxExecutionOrderParentheses',
  867. category: 'not yet classified',
  868. fn: function (){
  869. var self=this;
  870. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Parentheses", unescape("%22Use%20parentheses%20to%20change%20order%20of%20evaluation%22%0A%0A%282.5%20+%203.8%29%20rounded.%0A%0A%283%20max%3A%202%29%20+%202.%0A%0A%280@0%20extent%3A%20100@200%29%20bottomRight.%0A%0AProfStef%20next.")]);
  871. return self;},
  872. source: unescape('messageSyntaxExecutionOrderParentheses%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Parentheses%27%0Acontents%3A%20%0A%27%22Use%20parentheses%20to%20change%20order%20of%20evaluation%22%0A%0A%282.5%20+%203.8%29%20rounded.%0A%0A%283%20max%3A%202%29%20+%202.%0A%0A%280@0%20extent%3A%20100@200%29%20bottomRight.%0A%0AProfStef%20next.%27'),
  873. messageSends: ["title:contents:"],
  874. referencedClasses: [smalltalk.Lesson]
  875. }),
  876. smalltalk.SmalltalkSyntaxTutorial);
  877. smalltalk.addMethod(
  878. '_messageSyntaxKeyword',
  879. smalltalk.method({
  880. selector: 'messageSyntaxKeyword',
  881. category: 'not yet classified',
  882. fn: function (){
  883. var self=this;
  884. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Keyword messages", unescape("%22Keyword%20Messages%20are%20messages%20with%20arguments.%20They%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20akey%3A%20anotherObject%20akey2%3A%20anotherObject2%22%0A%0A%27Web%20development%20is%20a%20good%20deal%20of%20pain%27%20copyFrom%3A%201%20to%3A%2030%0A%0A%22The%20message%20is%20copyFrom%3Ato%3A%20sent%20to%20the%20String%20%27Web%20development%20is%20a%20good%20deal%20of%20pain%27%22%0A%0A1%20max%3A%203.%0A%0AArray%20with%3A%20%27hello%27%20with%3A%202%20with%3A%20Smalltalk.%0A%0A%22The%20message%20is%20with%3Awith%3Awith%3A%20implemented%20on%20class%20Array.%20Note%20you%20can%20also%20write%22%0A%0AArray%0A%09with%3A%20%27Hi%20there%21%27%0A%09with%3A%202%0A%09with%3A%20Smalltalk.%0A%09%0AProfStef%20perform%3A%20%27next%27.")]);
  885. return self;},
  886. source: unescape('messageSyntaxKeyword%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Keyword%20messages%27%20%0Acontents%3A%20%0A%27%22Keyword%20Messages%20are%20messages%20with%20arguments.%20They%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20akey%3A%20anotherObject%20akey2%3A%20anotherObject2%22%0A%0A%27%27Web%20development%20is%20a%20good%20deal%20of%20pain%27%27%20copyFrom%3A%201%20to%3A%2030%0A%0A%22The%20message%20is%20copyFrom%3Ato%3A%20sent%20to%20the%20String%20%27%27Web%20development%20is%20a%20good%20deal%20of%20pain%27%27%22%0A%0A1%20max%3A%203.%0A%0AArray%20with%3A%20%27%27hello%27%27%20with%3A%202%20with%3A%20Smalltalk.%0A%0A%22The%20message%20is%20with%3Awith%3Awith%3A%20implemented%20on%20class%20Array.%20Note%20you%20can%20also%20write%22%0A%0AArray%0A%09with%3A%20%27%27Hi%20there%21%27%27%0A%09with%3A%202%0A%09with%3A%20Smalltalk.%0A%09%0AProfStef%20perform%3A%20%27%27next%27%27.%27'),
  887. messageSends: ["title:contents:"],
  888. referencedClasses: [smalltalk.Lesson]
  889. }),
  890. smalltalk.SmalltalkSyntaxTutorial);
  891. smalltalk.addMethod(
  892. '_messageSyntaxUnary',
  893. smalltalk.method({
  894. selector: 'messageSyntaxUnary',
  895. category: 'not yet classified',
  896. fn: function (){
  897. var self=this;
  898. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Message syntax: Unary messages", unescape("%22Messages%20are%20sent%20to%20objects.%20There%20are%20three%20types%20of%20message%3A%20Unary%2C%20Binary%20and%20Keyword.%0A%0AUnary%20messages%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20aMessage%20%0A%0AYou%27ve%20already%20sent%20unary%20messages.%20For%20example%3A%22%0A%0A1%20class.%0A%0Afalse%20not.%0A%0ADate%20today.%0A%0ANumber%20pi.%0A%0A%22And%20of%20course%3A%20%22%0A%0AProfStef%20next.")]);
  899. return self;},
  900. source: unescape('messageSyntaxUnary%0A%09%5E%20Lesson%0Atitle%3A%20%27Message%20syntax%3A%20Unary%20messages%27%20%0Acontents%3A%20%0A%27%22Messages%20are%20sent%20to%20objects.%20There%20are%20three%20types%20of%20message%3A%20Unary%2C%20Binary%20and%20Keyword.%0A%0AUnary%20messages%20have%20the%20following%20form%3A%0A%20%20%20%20anObject%20aMessage%20%0A%0AYou%27%27ve%20already%20sent%20unary%20messages.%20For%20example%3A%22%0A%0A1%20class.%0A%0Afalse%20not.%0A%0ADate%20today.%0A%0ANumber%20pi.%0A%0A%22And%20of%20course%3A%20%22%0A%0AProfStef%20next.%27'),
  901. messageSends: ["title:contents:"],
  902. referencedClasses: [smalltalk.Lesson]
  903. }),
  904. smalltalk.SmalltalkSyntaxTutorial);
  905. smalltalk.addMethod(
  906. '_pharoEnvironment',
  907. smalltalk.method({
  908. selector: 'pharoEnvironment',
  909. category: 'not yet classified',
  910. fn: function (){
  911. var self=this;
  912. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Pharo environment", unescape("%22Every%20Smalltalk%20system%20is%20full%20of%20objects.%20There%20are%20windows%2C%20text%2C%20numbers%2C%20dates%2C%20colors%2C%20points%20and%20much%20more.%20You%20can%20interact%20with%20objects%20in%20a%20much%20more%20direct%20way%20than%20is%20possible%20with%20other%20programming%20languages.%0A%0AEvery%20object%20understands%20the%20message%20%27explore%27.%20As%20a%20result%2C%20you%20get%20an%20Explorer%20window%20that%20shows%20details%20about%20the%20object.%22%0A%0ADate%20today%20explore.%0A%0A%22This%20shows%20that%20the%20date%20object%20consists%20of%20a%20point%20in%20time%20%28start%29%20and%20a%20duration%20%28one%20day%20long%29.%22%0A%0AProfStef%20explore.%0A%0A%22You%20see%2C%20ProfStef%20class%20has%20a%20lot%20of%20objects.%20Let%27s%20take%20a%20look%20at%20my%20code%3A%22%0A%0AProfStef%20browse.%0A%0AProfStef%20next.")]);
  913. return self;},
  914. source: unescape('pharoEnvironment%0A%09%5E%20Lesson%0Atitle%3A%20%27Pharo%20environment%27%20%0Acontents%3A%20%0A%27%22Every%20Smalltalk%20system%20is%20full%20of%20objects.%20There%20are%20windows%2C%20text%2C%20numbers%2C%20dates%2C%20colors%2C%20points%20and%20much%20more.%20You%20can%20interact%20with%20objects%20in%20a%20much%20more%20direct%20way%20than%20is%20possible%20with%20other%20programming%20languages.%0A%0AEvery%20object%20understands%20the%20message%20%27%27explore%27%27.%20As%20a%20result%2C%20you%20get%20an%20Explorer%20window%20that%20shows%20details%20about%20the%20object.%22%0A%0ADate%20today%20explore.%0A%0A%22This%20shows%20that%20the%20date%20object%20consists%20of%20a%20point%20in%20time%20%28start%29%20and%20a%20duration%20%28one%20day%20long%29.%22%0A%0AProfStef%20explore.%0A%0A%22You%20see%2C%20ProfStef%20class%20has%20a%20lot%20of%20objects.%20Let%27%27s%20take%20a%20look%20at%20my%20code%3A%22%0A%0AProfStef%20browse.%0A%0AProfStef%20next.%27'),
  915. messageSends: ["title:contents:"],
  916. referencedClasses: [smalltalk.Lesson]
  917. }),
  918. smalltalk.SmalltalkSyntaxTutorial);
  919. smalltalk.addMethod(
  920. '_printing',
  921. smalltalk.method({
  922. selector: 'printing',
  923. category: 'not yet classified',
  924. fn: function (){
  925. var self=this;
  926. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Doing VS Printing: Printing", unescape("%22Now%20you%27re%20a%20Do%20It%20master%20%21%20Let%27s%20talk%20about%20printing.%20It%27s%20a%20Do%20It%20which%20prints%20the%20result%20next%20to%20the%20expression%20you%27ve%20selected.%0AFor%20example%2C%20select%20the%20text%20below%2C%20and%20click%20on%20%27PrintIt%27%3A%22%0A%0A1%20+%202.%0A%0A%22As%20with%20%27DoIt%27%2C%20there%20is%20also%20a%20shortcut%20to%20execute%20this%20command.%0A%0ATry%20CTRL-p%20on%20the%20following%20expressions%3A%22%0A%0ADate%20today.%0A%0A%22The%20result%20is%20selected%2C%20so%20you%20can%20erase%20it%20using%20the%20backspace%20key.%20Try%20it%20%21%22%0A%0ADate%20today%20asDateString.%0A%0ADate%20today%20asTimeString.%0A%0AProfStef%20next.")]);
  927. return self;},
  928. source: unescape('printing%20%0A%09%5E%20Lesson%0Atitle%3A%20%27Doing%20VS%20Printing%3A%20Printing%27%20%0Acontents%3A%20%0A%27%22Now%20you%27%27re%20a%20Do%20It%20master%20%21%20Let%27%27s%20talk%20about%20printing.%20It%27%27s%20a%20Do%20It%20which%20prints%20the%20result%20next%20to%20the%20expression%20you%27%27ve%20selected.%0AFor%20example%2C%20select%20the%20text%20below%2C%20and%20click%20on%20%27%27PrintIt%27%27%3A%22%0A%0A1%20+%202.%0A%0A%22As%20with%20%27%27DoIt%27%27%2C%20there%20is%20also%20a%20shortcut%20to%20execute%20this%20command.%0A%0ATry%20CTRL-p%20on%20the%20following%20expressions%3A%22%0A%0ADate%20today.%0A%0A%22The%20result%20is%20selected%2C%20so%20you%20can%20erase%20it%20using%20the%20backspace%20key.%20Try%20it%20%21%22%0A%0ADate%20today%20asDateString.%0A%0ADate%20today%20asTimeString.%0A%0AProfStef%20next.%27'),
  929. messageSends: ["title:contents:"],
  930. referencedClasses: [smalltalk.Lesson]
  931. }),
  932. smalltalk.SmalltalkSyntaxTutorial);
  933. smalltalk.addMethod(
  934. '_reflection',
  935. smalltalk.method({
  936. selector: 'reflection',
  937. category: 'not yet classified',
  938. fn: function (){
  939. var self=this;
  940. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Reflection", unescape("%22You%20can%20inspect%20and%20change%20the%20system%20at%20runtime.%0A%0ATake%20a%20look%20at%20the%20source%20code%20of%20the%20method%20%23and%3A%20of%20the%20class%20Boolean%3A%22%0A%0A%28Boolean%20methodDictionary%20at%3A%20%27and%3A%27%29%20source.%0A%0A%22Or%20all%20the%20methods%20it%20sends%3A%22%0A%0A%28Boolean%20methodDictionary%20at%3A%20%27and%3A%27%29%20messageSends.%0A%0A%22Here%27s%20all%20the%20methods%20I%20implement%3A%22%0A%0AProfStef%20methodDictionary.%0A%0A%22Let%27s%20create%20a%20new%20method%20to%20go%20to%20the%20next%20lesson%3A%22%0A%0A%7CnewMethod%7C%0AnewMethod%20%3A%3D%20Compiler%20new%20load%3A%20%27goToNextLesson%20ProfStef%20next.%27%20forClass%3A%20ProfStef.%0AProfStef%20class%20addCompiledMethod%3A%20newMethod%0A%0A%22Wow%21%20I%20can%27t%20wait%20to%20use%20my%20new%20method%21%22%0A%0AProfStef%20goToNextLesson.")]);
  941. return self;},
  942. source: unescape('reflection%0A%09%5E%20Lesson%0Atitle%3A%20%27Reflection%27%20%0Acontents%3A%20%0A%27%22You%20can%20inspect%20and%20change%20the%20system%20at%20runtime.%0A%0ATake%20a%20look%20at%20the%20source%20code%20of%20the%20method%20%23and%3A%20of%20the%20class%20Boolean%3A%22%0A%0A%28Boolean%20methodDictionary%20at%3A%20%27%27and%3A%27%27%29%20source.%0A%0A%22Or%20all%20the%20methods%20it%20sends%3A%22%0A%0A%28Boolean%20methodDictionary%20at%3A%20%27%27and%3A%27%27%29%20messageSends.%0A%0A%22Here%27%27s%20all%20the%20methods%20I%20implement%3A%22%0A%0AProfStef%20methodDictionary.%0A%0A%22Let%27%27s%20create%20a%20new%20method%20to%20go%20to%20the%20next%20lesson%3A%22%0A%0A%7CnewMethod%7C%0AnewMethod%20%3A%3D%20Compiler%20new%20load%3A%20%27%27goToNextLesson%20ProfStef%20next.%27%27%20forClass%3A%20ProfStef.%0AProfStef%20class%20addCompiledMethod%3A%20newMethod%0A%0A%22Wow%21%20I%20can%27%27t%20wait%20to%20use%20my%20new%20method%21%22%0A%0AProfStef%20goToNextLesson.%27'),
  943. messageSends: ["title:contents:"],
  944. referencedClasses: [smalltalk.Lesson]
  945. }),
  946. smalltalk.SmalltalkSyntaxTutorial);
  947. smalltalk.addMethod(
  948. '_reflectionContinued',
  949. smalltalk.method({
  950. selector: 'reflectionContinued',
  951. category: 'not yet classified',
  952. fn: function (){
  953. var self=this;
  954. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Reflection continued", unescape("%22So%20cool%2C%20isn%27t%20it%20%3F%20%20Before%20going%20further%2C%20let%27s%20remove%20this%20method%3A%22%0A%0AProfStef%20class%20methodAt%3A%20%23goToNextLesson.%0A%0AProfStef%20class%20removeCompiledMethod%3A%20%28ProfStef%20class%20methodAt%3A%20%23goToNextLesson%29.%0A%0AProfStef%20class%20methodAt%3A%20%23goToNextLesson.%0A%0A%0A%22Then%20move%20forward%3A%22%0A%0AProfStef%20perform%3A%23next")]);
  955. return self;},
  956. source: unescape('reflectionContinued%0A%09%5E%20Lesson%0Atitle%3A%20%27Reflection%20continued%27%20%0Acontents%3A%20%0A%27%22So%20cool%2C%20isn%27%27t%20it%20%3F%20%20Before%20going%20further%2C%20let%27%27s%20remove%20this%20method%3A%22%0A%0AProfStef%20class%20methodAt%3A%20%23goToNextLesson.%0A%0AProfStef%20class%20removeCompiledMethod%3A%20%28ProfStef%20class%20methodAt%3A%20%23goToNextLesson%29.%0A%0AProfStef%20class%20methodAt%3A%20%23goToNextLesson.%0A%0A%0A%22Then%20move%20forward%3A%22%0A%0AProfStef%20perform%3A%23next%27'),
  957. messageSends: ["title:contents:"],
  958. referencedClasses: [smalltalk.Lesson]
  959. }),
  960. smalltalk.SmalltalkSyntaxTutorial);
  961. smalltalk.addMethod(
  962. '_theEnd',
  963. smalltalk.method({
  964. selector: 'theEnd',
  965. category: 'not yet classified',
  966. fn: function (){
  967. var self=this;
  968. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", [unescape("Tutorial%20done%20%21"), unescape("%22This%20tutorial%20is%20done.%20Enjoy%20programming%20Smalltalk%20with%20JTalk.%20%0A%0AYou%20can%20run%20this%20tutorial%20again%20by%20evaluating%3A%20ProfStef%20go.%0A%0ASee%20you%20soon%20%21%22%0A")]);
  969. return self;},
  970. source: unescape('theEnd%0A%09%5E%20Lesson%0Atitle%3A%20%27Tutorial%20done%20%21%27%20%0Acontents%3A%20%0A%27%22This%20tutorial%20is%20done.%20Enjoy%20programming%20Smalltalk%20with%20JTalk.%20%0A%0AYou%20can%20run%20this%20tutorial%20again%20by%20evaluating%3A%20ProfStef%20go.%0A%0ASee%20you%20soon%20%21%22%0A%27'),
  971. messageSends: ["title:contents:"],
  972. referencedClasses: [smalltalk.Lesson]
  973. }),
  974. smalltalk.SmalltalkSyntaxTutorial);
  975. smalltalk.addMethod(
  976. '_welcome',
  977. smalltalk.method({
  978. selector: 'welcome',
  979. category: 'not yet classified',
  980. fn: function (){
  981. var self=this;
  982. return smalltalk.send((smalltalk.Lesson || Lesson), "_title_contents_", ["Welcome", unescape("%20%22Hello%21%20I%27m%20Professor%20Stef.%20%0A%0AYou%20must%20want%20me%20to%20help%20you%20learn%20Smalltalk.%0A%0ASo%20let%27s%20go%20to%20the%20first%20lesson.%20%20Select%20the%20text%20below%20and%20click%20on%20the%20%27DoIt%27%20button%22%0A%0AProfStef%20next.")]);
  983. return self;},
  984. source: unescape('welcome%0A%09%5E%20Lesson%0Atitle%3A%20%27Welcome%27%20%0Acontents%3A%20%0A%27%20%22Hello%21%20I%27%27m%20Professor%20Stef.%20%0A%0AYou%20must%20want%20me%20to%20help%20you%20learn%20Smalltalk.%0A%0ASo%20let%27%27s%20go%20to%20the%20first%20lesson.%20%20Select%20the%20text%20below%20and%20click%20on%20the%20%27%27DoIt%27%27%20button%22%0A%0AProfStef%20next.%27'),
  985. messageSends: ["title:contents:"],
  986. referencedClasses: [smalltalk.Lesson]
  987. }),
  988. smalltalk.SmalltalkSyntaxTutorial);
  989. smalltalk.addClass('ProfStefWorkspace', smalltalk.Workspace, ['title', 'titleHeader'], 'TrySmalltalk');
  990. smalltalk.addMethod(
  991. '_contents_',
  992. smalltalk.method({
  993. selector: 'contents:',
  994. category: 'not yet classified',
  995. fn: function (aString){
  996. var self=this;
  997. smalltalk.send(smalltalk.send(self, "_sourceArea", []), "_val_", [aString]);
  998. return self;},
  999. source: unescape('contents%3A%20aString%0A%09self%20sourceArea%20val%3A%20aString'),
  1000. messageSends: ["val:", "sourceArea"],
  1001. referencedClasses: []
  1002. }),
  1003. smalltalk.ProfStefWorkspace);
  1004. smalltalk.addMethod(
  1005. '_renderTab',
  1006. smalltalk.method({
  1007. selector: 'renderTab',
  1008. category: 'not yet classified',
  1009. fn: function (){
  1010. var self=this;
  1011. smalltalk.send(self['@div'], "_contents_", [(function(html){self['@title']=(function($rec){smalltalk.send($rec, "_id_", ["profStefTitle"]);return smalltalk.send($rec, "_with_", ["Workspace"]);})(smalltalk.send(html, "_h2", []));(function($rec){smalltalk.send($rec, "_class_", ["jt_box"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderBoxOn_", [html]);})]);})(smalltalk.send(html, "_div", []));return (function($rec){smalltalk.send($rec, "_class_", ["jt_buttons"]);return smalltalk.send($rec, "_with_", [(function(){return smalltalk.send(self, "_renderButtonsOn_", [html]);})]);})(smalltalk.send(html, "_div", []));})]);
  1012. return self;},
  1013. source: unescape('renderTab%0A%09div%20contents%3A%20%5B%3Ahtml%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%20%3A%3D%20html%20h2%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20id%3A%20%27profStefTitle%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20with%3A%20%27Workspace%27.%0A%09%20%20%20%20html%20div%0A%09%09class%3A%20%27jt_box%27%3B%0A%09%09with%3A%20%5Bself%20renderBoxOn%3A%20html%5D.%0A%09%20%20%20%20html%20div%0A%09%09class%3A%20%27jt_buttons%27%3B%0A%09%09with%3A%20%5Bself%20renderButtonsOn%3A%20html%5D%5D'),
  1014. messageSends: ["contents:", "id:", "with:", "h2", "class:", "renderBoxOn:", "div", "renderButtonsOn:"],
  1015. referencedClasses: []
  1016. }),
  1017. smalltalk.ProfStefWorkspace);
  1018. smalltalk.addMethod(
  1019. '_title_',
  1020. smalltalk.method({
  1021. selector: 'title:',
  1022. category: 'not yet classified',
  1023. fn: function (aTitle){
  1024. var self=this;
  1025. smalltalk.send(self['@title'], "_contents_", [(function(html){return (function($rec){smalltalk.send($rec, "_id_", ["profStefTitle"]);return smalltalk.send($rec, "_with_", [aTitle]);})(smalltalk.send(html, "_h2", []));})]);
  1026. return self;},
  1027. source: unescape('title%3A%20aTitle%0A%09title%20contents%3A%20%5B%3Ahtml%20%7C%20%0A%09%09html%20h2%0A%09%09%09id%3A%20%27profStefTitle%27%3B%0A%09%09%09with%3A%20aTitle%20%5D.'),
  1028. messageSends: ["contents:", "id:", "with:", "h2"],
  1029. referencedClasses: []
  1030. }),
  1031. smalltalk.ProfStefWorkspace);