Kernel-Classes.js 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958
  1. smalltalk.addPackage('Kernel-Classes', {});
  2. smalltalk.addClass('ClassCommentReader', smalltalk.Object, ['class', 'chunkParser'], 'Kernel-Classes');
  3. smalltalk.ClassCommentReader.comment=unescape('ClassCommentReader%20represents%20a%20mechanism%20for%20retrieving%20class%20descriptions%20stored%20on%20a%20file.%0ASee%20%60ClassCategoryReader%60%20too.')
  4. smalltalk.addMethod(
  5. unescape('_class_'),
  6. smalltalk.method({
  7. selector: unescape('class%3A'),
  8. category: 'accessing',
  9. fn: function (aClass){
  10. var self=this;
  11. (self['@class']=aClass);
  12. return self;},
  13. args: ["aClass"],
  14. source: unescape('class%3A%20aClass%0A%09class%20%3A%3D%20aClass'),
  15. messageSends: [],
  16. referencedClasses: []
  17. }),
  18. smalltalk.ClassCommentReader);
  19. smalltalk.addMethod(
  20. unescape('_scanFrom_'),
  21. smalltalk.method({
  22. selector: unescape('scanFrom%3A'),
  23. category: 'fileIn',
  24. fn: function (aChunkParser){
  25. var self=this;
  26. var chunk=nil;
  27. (chunk=smalltalk.send(aChunkParser, "_nextChunk", []));
  28. ((($receiver = smalltalk.send(chunk, "_isEmpty", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_setComment_", [chunk]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_setComment_", [chunk]);})]));
  29. return self;},
  30. args: ["aChunkParser"],
  31. source: unescape('scanFrom%3A%20aChunkParser%0A%09%7C%20chunk%20%7C%0A%09chunk%20%3A%3D%20aChunkParser%20nextChunk.%0A%09chunk%20isEmpty%20ifFalse%3A%20%5B%0A%09%20%20%20%20self%20setComment%3A%20chunk%5D.'),
  32. messageSends: ["nextChunk", "ifFalse:", "isEmpty", "setComment:"],
  33. referencedClasses: []
  34. }),
  35. smalltalk.ClassCommentReader);
  36. smalltalk.addMethod(
  37. unescape('_initialize'),
  38. smalltalk.method({
  39. selector: unescape('initialize'),
  40. category: 'initialization',
  41. fn: function (){
  42. var self=this;
  43. smalltalk.send(self, "_initialize", [], smalltalk.Object);
  44. (self['@chunkParser']=smalltalk.send((smalltalk.ChunkParser || ChunkParser), "_new", []));
  45. return self;},
  46. args: [],
  47. source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
  48. messageSends: ["initialize", "new"],
  49. referencedClasses: ["ChunkParser"]
  50. }),
  51. smalltalk.ClassCommentReader);
  52. smalltalk.addMethod(
  53. unescape('_setComment_'),
  54. smalltalk.method({
  55. selector: unescape('setComment%3A'),
  56. category: 'private',
  57. fn: function (aString){
  58. var self=this;
  59. smalltalk.send(self['@class'], "_comment_", [aString]);
  60. return self;},
  61. args: ["aString"],
  62. source: unescape('setComment%3A%20aString%0A%20%20%20%20class%20comment%3A%20aString'),
  63. messageSends: ["comment:"],
  64. referencedClasses: []
  65. }),
  66. smalltalk.ClassCommentReader);
  67. smalltalk.addClass('ClassCategoryReader', smalltalk.Object, ['class', 'category', 'chunkParser'], 'Kernel-Classes');
  68. smalltalk.ClassCategoryReader.comment=unescape('ClassCategoryReader%20represents%20a%20mechanism%20for%20retrieving%20class%20descriptions%20stored%20on%20a%20file.')
  69. smalltalk.addMethod(
  70. unescape('_initialize'),
  71. smalltalk.method({
  72. selector: unescape('initialize'),
  73. category: 'initialization',
  74. fn: function (){
  75. var self=this;
  76. smalltalk.send(self, "_initialize", [], smalltalk.Object);
  77. (self['@chunkParser']=smalltalk.send((smalltalk.ChunkParser || ChunkParser), "_new", []));
  78. return self;},
  79. args: [],
  80. source: unescape('initialize%0A%09super%20initialize.%0A%09chunkParser%20%3A%3D%20ChunkParser%20new.'),
  81. messageSends: ["initialize", "new"],
  82. referencedClasses: ["ChunkParser"]
  83. }),
  84. smalltalk.ClassCategoryReader);
  85. smalltalk.addMethod(
  86. unescape('_class_category_'),
  87. smalltalk.method({
  88. selector: unescape('class%3Acategory%3A'),
  89. category: 'accessing',
  90. fn: function (aClass, aString){
  91. var self=this;
  92. (self['@class']=aClass);
  93. (self['@category']=aString);
  94. return self;},
  95. args: ["aClass", "aString"],
  96. source: unescape('class%3A%20aClass%20category%3A%20aString%0A%09class%20%3A%3D%20aClass.%0A%09category%20%3A%3D%20aString'),
  97. messageSends: [],
  98. referencedClasses: []
  99. }),
  100. smalltalk.ClassCategoryReader);
  101. smalltalk.addMethod(
  102. unescape('_scanFrom_'),
  103. smalltalk.method({
  104. selector: unescape('scanFrom%3A'),
  105. category: 'fileIn',
  106. fn: function (aChunkParser){
  107. var self=this;
  108. var chunk=nil;
  109. (function(){while(!(function(){(chunk=smalltalk.send(aChunkParser, "_nextChunk", []));return smalltalk.send(chunk, "_isEmpty", []);})()) {(function(){return smalltalk.send(self, "_compileMethod_", [chunk]);})()}})();
  110. return self;},
  111. args: ["aChunkParser"],
  112. source: unescape('scanFrom%3A%20aChunkParser%0A%09%7C%20chunk%20%7C%0A%09%5Bchunk%20%3A%3D%20aChunkParser%20nextChunk.%0A%09chunk%20isEmpty%5D%20whileFalse%3A%20%5B%0A%09%20%20%20%20self%20compileMethod%3A%20chunk%5D'),
  113. messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:"],
  114. referencedClasses: []
  115. }),
  116. smalltalk.ClassCategoryReader);
  117. smalltalk.addMethod(
  118. unescape('_compileMethod_'),
  119. smalltalk.method({
  120. selector: unescape('compileMethod%3A'),
  121. category: 'private',
  122. fn: function (aString){
  123. var self=this;
  124. var method=nil;
  125. var compiler=nil;
  126. (method=smalltalk.send((compiler=smalltalk.send((smalltalk.Compiler || Compiler), "_new", [])), "_load_forClass_", [aString, self['@class']]));
  127. smalltalk.send(method, "_category_", [self['@category']]);
  128. smalltalk.send(self['@class'], "_addCompiledMethod_", [method]);
  129. smalltalk.send(compiler, "_setupClass_", [self['@class']]);
  130. return self;},
  131. args: ["aString"],
  132. source: unescape('compileMethod%3A%20aString%0A%09%7C%20method%20compiler%20%7C%0A%09method%20%3A%3D%20%28compiler%20%3A%3D%20Compiler%20new%29%20load%3A%20aString%20forClass%3A%20class.%0A%09method%20category%3A%20category.%0A%09class%20addCompiledMethod%3A%20method.%0A%09compiler%20setupClass%3A%20class.'),
  133. messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:", "setupClass:"],
  134. referencedClasses: ["Compiler"]
  135. }),
  136. smalltalk.ClassCategoryReader);
  137. smalltalk.addClass('ClassBuilder', smalltalk.Object, [], 'Kernel-Classes');
  138. smalltalk.ClassBuilder.comment=unescape('ClassBuilder%20is%20responsible%20for%20compiling%20new%20classes%20or%20modifying%20existing%20classes%20in%20the%20system.%0A%0ARather%20than%20using%20ClassBuilder%20directly%20to%20compile%20a%20class%2C%20use%20%60Class%20%3E%3E%20subclass%3AinstanceVariableNames%3Apackage%3A%60.')
  139. smalltalk.addMethod(
  140. unescape('_superclass_subclass_'),
  141. smalltalk.method({
  142. selector: unescape('superclass%3Asubclass%3A'),
  143. category: 'class creation',
  144. fn: function (aClass, aString){
  145. var self=this;
  146. return smalltalk.send(self, "_superclass_subclass_instanceVariableNames_package_", [aClass, aString, "", nil]);
  147. return self;},
  148. args: ["aClass", "aString"],
  149. source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%0A%09%5Eself%20superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20%27%27%20package%3A%20nil'),
  150. messageSends: ["superclass:subclass:instanceVariableNames:package:"],
  151. referencedClasses: []
  152. }),
  153. smalltalk.ClassBuilder);
  154. smalltalk.addMethod(
  155. unescape('_class_instanceVariableNames_'),
  156. smalltalk.method({
  157. selector: unescape('class%3AinstanceVariableNames%3A'),
  158. category: 'class creation',
  159. fn: function (aClass, aString){
  160. var self=this;
  161. ((($receiver = smalltalk.send(aClass, "_isMetaclass", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_name", []), "__comma", [" is not a metaclass"])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(self, "_error_", [smalltalk.send(smalltalk.send(aClass, "_name", []), "__comma", [" is not a metaclass"])]);})]));
  162. smalltalk.send(aClass, "_basicAt_put_", ["iVarNames", smalltalk.send(self, "_instanceVariableNamesFor_", [aString])]);
  163. smalltalk.send(self, "_setupClass_", [aClass]);
  164. return self;},
  165. args: ["aClass", "aString"],
  166. source: unescape('class%3A%20aClass%20instanceVariableNames%3A%20aString%0A%09aClass%20isMetaclass%20ifFalse%3A%20%5Bself%20error%3A%20aClass%20name%2C%20%27%20is%20not%20a%20metaclass%27%5D.%0A%09aClass%20basicAt%3A%20%27iVarNames%27%20put%3A%20%28self%20instanceVariableNamesFor%3A%20aString%29.%0A%09self%20setupClass%3A%20aClass'),
  167. messageSends: ["ifFalse:", "isMetaclass", "error:", unescape("%2C"), "name", "basicAt:put:", "instanceVariableNamesFor:", "setupClass:"],
  168. referencedClasses: []
  169. }),
  170. smalltalk.ClassBuilder);
  171. smalltalk.addMethod(
  172. unescape('_instanceVariableNamesFor_'),
  173. smalltalk.method({
  174. selector: unescape('instanceVariableNamesFor%3A'),
  175. category: 'private',
  176. fn: function (aString){
  177. var self=this;
  178. return smalltalk.send(smalltalk.send(aString, "_tokenize_", [" "]), "_reject_", [(function(each){return smalltalk.send(each, "_isEmpty", []);})]);
  179. return self;},
  180. args: ["aString"],
  181. source: unescape('instanceVariableNamesFor%3A%20aString%0A%09%5E%28aString%20tokenize%3A%20%27%20%27%29%20reject%3A%20%5B%3Aeach%20%7C%20each%20isEmpty%5D'),
  182. messageSends: ["reject:", "tokenize:", "isEmpty"],
  183. referencedClasses: []
  184. }),
  185. smalltalk.ClassBuilder);
  186. smalltalk.addMethod(
  187. unescape('_addSubclassOf_named_instanceVariableNames_'),
  188. smalltalk.method({
  189. selector: unescape('addSubclassOf%3Anamed%3AinstanceVariableNames%3A'),
  190. category: 'private',
  191. fn: function (aClass, aString, aCollection){
  192. var self=this;
  193. smalltalk.addClass(aString, aClass, aCollection);
  194. return smalltalk[aString];
  195. return self;},
  196. args: ["aClass", "aString", "aCollection"],
  197. source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
  198. messageSends: [],
  199. referencedClasses: []
  200. }),
  201. smalltalk.ClassBuilder);
  202. smalltalk.addMethod(
  203. unescape('_setupClass_'),
  204. smalltalk.method({
  205. selector: unescape('setupClass%3A'),
  206. category: 'private',
  207. fn: function (aClass){
  208. var self=this;
  209. smalltalk.init(aClass);;
  210. return self;},
  211. args: ["aClass"],
  212. source: unescape('setupClass%3A%20aClass%0A%09%3Csmalltalk.init%28aClass%29%3B%3E'),
  213. messageSends: [],
  214. referencedClasses: []
  215. }),
  216. smalltalk.ClassBuilder);
  217. smalltalk.addMethod(
  218. unescape('_superclass_subclass_instanceVariableNames_package_'),
  219. smalltalk.method({
  220. selector: unescape('superclass%3Asubclass%3AinstanceVariableNames%3Apackage%3A'),
  221. category: 'class creation',
  222. fn: function (aClass, aString, aString2, aString3){
  223. var self=this;
  224. var newClass=nil;
  225. (newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_package_", [aClass, aString, smalltalk.send(self, "_instanceVariableNamesFor_", [aString2]), (($receiver = aString3) == nil || $receiver == undefined) ? (function(){return "unclassified";})() : $receiver]));
  226. smalltalk.send(self, "_setupClass_", [newClass]);
  227. return newClass;
  228. return self;},
  229. args: ["aClass", "aString", "aString2", "aString3"],
  230. source: unescape('superclass%3A%20aClass%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3%0A%09%7C%20newClass%20%7C%0A%09newClass%20%3A%3D%20self%20addSubclassOf%3A%20aClass%0A%09%09%09%09named%3A%20aString%20instanceVariableNames%3A%20%28self%20instanceVariableNamesFor%3A%20aString2%29%0A%09%09%09%09package%3A%20%28aString3%20ifNil%3A%20%5B%27unclassified%27%5D%29.%0A%09self%20setupClass%3A%20newClass.%0A%09%5EnewClass'),
  231. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "instanceVariableNamesFor:", "ifNil:", "setupClass:"],
  232. referencedClasses: []
  233. }),
  234. smalltalk.ClassBuilder);
  235. smalltalk.addMethod(
  236. unescape('_addSubclassOf_named_instanceVariableNames_package_'),
  237. smalltalk.method({
  238. selector: unescape('addSubclassOf%3Anamed%3AinstanceVariableNames%3Apackage%3A'),
  239. category: 'private',
  240. fn: function (aClass, aString, aCollection, packageName){
  241. var self=this;
  242. smalltalk.addClass(aString, aClass, aCollection, packageName);
  243. return smalltalk[aString];
  244. return self;},
  245. args: ["aClass", "aString", "aCollection", "packageName"],
  246. source: unescape('addSubclassOf%3A%20aClass%20named%3A%20aString%20instanceVariableNames%3A%20aCollection%20package%3A%20packageName%0A%09%3Csmalltalk.addClass%28aString%2C%20aClass%2C%20aCollection%2C%20packageName%29%3B%0A%09%20%20%20%20return%20smalltalk%5BaString%5D%3E'),
  247. messageSends: [],
  248. referencedClasses: []
  249. }),
  250. smalltalk.ClassBuilder);
  251. smalltalk.addMethod(
  252. unescape('_copyClass_named_'),
  253. smalltalk.method({
  254. selector: unescape('copyClass%3Anamed%3A'),
  255. category: 'private',
  256. fn: function (aClass, aString){
  257. var self=this;
  258. var newClass=nil;
  259. (newClass=smalltalk.send(self, "_addSubclassOf_named_instanceVariableNames_package_", [smalltalk.send(aClass, "_superclass", []), aString, smalltalk.send(aClass, "_instanceVariableNames", []), smalltalk.send(smalltalk.send(aClass, "_package", []), "_name", [])]));
  260. smalltalk.send(self, "_setupClass_", [newClass]);
  261. smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_methodDictionary", []), "_values", []), "_do_", [(function(each){smalltalk.send(newClass, "_addCompiledMethod_", [smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler), "_new", []), "_load_forClass_", [smalltalk.send(each, "_source", []), newClass])]);return smalltalk.send(smalltalk.send(smalltalk.send(newClass, "_methodDictionary", []), "_at_", [smalltalk.send(each, "_selector", [])]), "_category_", [smalltalk.send(each, "_category", [])]);})]);
  262. smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(aClass, "_class", []), "_methodDictionary", []), "_values", []), "_do_", [(function(each){smalltalk.send(smalltalk.send(newClass, "_class", []), "_addCompiledMethod_", [smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler), "_new", []), "_load_forClass_", [smalltalk.send(each, "_source", []), smalltalk.send(newClass, "_class", [])])]);return smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(newClass, "_class", []), "_methodDictionary", []), "_at_", [smalltalk.send(each, "_selector", [])]), "_category_", [smalltalk.send(each, "_category", [])]);})]);
  263. smalltalk.send(self, "_setupClass_", [newClass]);
  264. return newClass;
  265. return self;},
  266. args: ["aClass", "aString"],
  267. source: unescape('copyClass%3A%20aClass%20named%3A%20aString%0A%09%7C%20newClass%20%7C%0A%0A%09newClass%20%3A%3D%20self%20%0A%09%09addSubclassOf%3A%20aClass%20superclass%0A%09%09named%3A%20aString%20%0A%09%09instanceVariableNames%3A%20aClass%20instanceVariableNames%20%0A%09%09package%3A%20aClass%20package%20name.%0A%0A%09self%20setupClass%3A%20newClass.%0A%0A%09aClass%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09newClass%20addCompiledMethod%3A%20%28Compiler%20new%20load%3A%20each%20source%20forClass%3A%20newClass%29.%0A%09%09%28newClass%20methodDictionary%20at%3A%20each%20selector%29%20category%3A%20each%20category%5D.%0A%0A%09aClass%20class%20methodDictionary%20values%20do%3A%20%5B%3Aeach%20%7C%0A%09%09newClass%20class%20addCompiledMethod%3A%20%28Compiler%20new%20load%3A%20each%20source%20forClass%3A%20newClass%20class%29.%0A%09%09%28newClass%20class%20methodDictionary%20at%3A%20each%20selector%29%20category%3A%20each%20category%5D.%0A%0A%09self%20setupClass%3A%20newClass.%0A%09%5EnewClass'),
  268. messageSends: ["addSubclassOf:named:instanceVariableNames:package:", "superclass", "instanceVariableNames", "name", "package", "setupClass:", "do:", "values", "methodDictionary", "addCompiledMethod:", "load:forClass:", "new", "source", "category:", "at:", "selector", "category", "class"],
  269. referencedClasses: ["Compiler"]
  270. }),
  271. smalltalk.ClassBuilder);
  272. smalltalk.addClass('Behavior', smalltalk.Object, [], 'Kernel-Classes');
  273. smalltalk.Behavior.comment=unescape('Behavior%20is%20the%20superclass%20of%20all%20class%20objects.%20%0A%0AIt%20defines%20the%20protocol%20for%20creating%20instances%20of%20a%20class%20with%20%60%23basicNew%60%20and%20%60%23new%60%20%28see%20%60boot.js%60%20for%20class%20constructors%20details%29.%0AInstances%20know%20about%20the%20subclass/superclass%20relationships%20between%20classes%2C%20contain%20the%20description%20that%20instances%20are%20created%20from%2C%20%0Aand%20hold%20the%20method%20dictionary%20that%27s%20associated%20with%20each%20class.%0A%0ABehavior%20also%20%20provides%20methods%20for%20compiling%20methods%2C%20examining%20the%20method%20dictionary%2C%20and%20iterating%20over%20the%20class%20hierarchy.')
  274. smalltalk.addMethod(
  275. unescape('_new'),
  276. smalltalk.method({
  277. selector: unescape('new'),
  278. category: 'instance creation',
  279. fn: function (){
  280. var self=this;
  281. return smalltalk.send(smalltalk.send(self, "_basicNew", []), "_initialize", []);
  282. return self;},
  283. args: [],
  284. source: unescape('new%0A%09%5Eself%20basicNew%20initialize'),
  285. messageSends: ["initialize", "basicNew"],
  286. referencedClasses: []
  287. }),
  288. smalltalk.Behavior);
  289. smalltalk.addMethod(
  290. unescape('_basicNew'),
  291. smalltalk.method({
  292. selector: unescape('basicNew'),
  293. category: 'instance creation',
  294. fn: function (){
  295. var self=this;
  296. return new self.fn();
  297. return self;},
  298. args: [],
  299. source: unescape('basicNew%0A%09%3Creturn%20new%20self.fn%28%29%3E'),
  300. messageSends: [],
  301. referencedClasses: []
  302. }),
  303. smalltalk.Behavior);
  304. smalltalk.addMethod(
  305. unescape('_name'),
  306. smalltalk.method({
  307. selector: unescape('name'),
  308. category: 'accessing',
  309. fn: function (){
  310. var self=this;
  311. return self.className || nil;
  312. return self;},
  313. args: [],
  314. source: unescape('name%0A%09%3Creturn%20self.className%20%7C%7C%20nil%3E'),
  315. messageSends: [],
  316. referencedClasses: []
  317. }),
  318. smalltalk.Behavior);
  319. smalltalk.addMethod(
  320. unescape('_superclass'),
  321. smalltalk.method({
  322. selector: unescape('superclass'),
  323. category: 'accessing',
  324. fn: function (){
  325. var self=this;
  326. return self.superclass || nil;
  327. return self;},
  328. args: [],
  329. source: unescape('superclass%0A%09%3Creturn%20self.superclass%20%7C%7C%20nil%3E'),
  330. messageSends: [],
  331. referencedClasses: []
  332. }),
  333. smalltalk.Behavior);
  334. smalltalk.addMethod(
  335. unescape('_subclasses'),
  336. smalltalk.method({
  337. selector: unescape('subclasses'),
  338. category: 'accessing',
  339. fn: function (){
  340. var self=this;
  341. return smalltalk.subclasses(self);
  342. return self;},
  343. args: [],
  344. source: unescape('subclasses%0A%09%3Creturn%20smalltalk.subclasses%28self%29%3E'),
  345. messageSends: [],
  346. referencedClasses: []
  347. }),
  348. smalltalk.Behavior);
  349. smalltalk.addMethod(
  350. unescape('_allSubclasses'),
  351. smalltalk.method({
  352. selector: unescape('allSubclasses'),
  353. category: 'accessing',
  354. fn: function (){
  355. var self=this;
  356. var result=nil;
  357. (result=smalltalk.send(self, "_subclasses", []));
  358. smalltalk.send(smalltalk.send(self, "_subclasses", []), "_do_", [(function(each){return smalltalk.send(result, "_addAll_", [smalltalk.send(each, "_allSubclasses", [])]);})]);
  359. return result;
  360. return self;},
  361. args: [],
  362. source: unescape('allSubclasses%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20subclasses.%0A%09self%20subclasses%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20result%20addAll%3A%20each%20allSubclasses%5D.%0A%09%5Eresult'),
  363. messageSends: ["subclasses", "do:", "addAll:", "allSubclasses"],
  364. referencedClasses: []
  365. }),
  366. smalltalk.Behavior);
  367. smalltalk.addMethod(
  368. unescape('_withAllSubclasses'),
  369. smalltalk.method({
  370. selector: unescape('withAllSubclasses'),
  371. category: 'accessing',
  372. fn: function (){
  373. var self=this;
  374. return (function($rec){smalltalk.send($rec, "_addAll_", [smalltalk.send(self, "_allSubclasses", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.Array || Array), "_with_", [self]));
  375. return self;},
  376. args: [],
  377. source: unescape('withAllSubclasses%0A%09%5E%28Array%20with%3A%20self%29%20addAll%3A%20self%20allSubclasses%3B%20yourself'),
  378. messageSends: ["addAll:", "allSubclasses", "yourself", "with:"],
  379. referencedClasses: ["Array"]
  380. }),
  381. smalltalk.Behavior);
  382. smalltalk.addMethod(
  383. unescape('_prototype'),
  384. smalltalk.method({
  385. selector: unescape('prototype'),
  386. category: 'accessing',
  387. fn: function (){
  388. var self=this;
  389. return self.fn.prototype;
  390. return self;},
  391. args: [],
  392. source: unescape('prototype%0A%09%3Creturn%20self.fn.prototype%3E'),
  393. messageSends: [],
  394. referencedClasses: []
  395. }),
  396. smalltalk.Behavior);
  397. smalltalk.addMethod(
  398. unescape('_methodDictionary'),
  399. smalltalk.method({
  400. selector: unescape('methodDictionary'),
  401. category: 'accessing',
  402. fn: function (){
  403. var self=this;
  404. var dict = smalltalk.HashedCollection._new();
  405. var methods = self.fn.prototype.methods;
  406. for(var i in methods) {
  407. if(methods[i].selector) {
  408. dict._at_put_(methods[i].selector, methods[i]);
  409. }
  410. };
  411. return dict;
  412. return self;},
  413. args: [],
  414. source: unescape('methodDictionary%0A%09%3Cvar%20dict%20%3D%20smalltalk.HashedCollection._new%28%29%3B%0A%09var%20methods%20%3D%20self.fn.prototype.methods%3B%0A%09for%28var%20i%20in%20methods%29%20%7B%0A%09%09if%28methods%5Bi%5D.selector%29%20%7B%0A%09%09%09dict._at_put_%28methods%5Bi%5D.selector%2C%20methods%5Bi%5D%29%3B%0A%09%09%7D%0A%09%7D%3B%0A%09return%20dict%3E'),
  415. messageSends: [],
  416. referencedClasses: []
  417. }),
  418. smalltalk.Behavior);
  419. smalltalk.addMethod(
  420. unescape('_methodsFor_'),
  421. smalltalk.method({
  422. selector: unescape('methodsFor%3A'),
  423. category: 'accessing',
  424. fn: function (aString){
  425. var self=this;
  426. return (function($rec){smalltalk.send($rec, "_class_category_", [self, aString]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.ClassCategoryReader || ClassCategoryReader), "_new", []));
  427. return self;},
  428. args: ["aString"],
  429. source: unescape('methodsFor%3A%20aString%0A%09%5EClassCategoryReader%20new%0A%09%20%20%20%20class%3A%20self%20category%3A%20aString%3B%0A%09%20%20%20%20yourself'),
  430. messageSends: ["class:category:", "yourself", "new"],
  431. referencedClasses: ["ClassCategoryReader"]
  432. }),
  433. smalltalk.Behavior);
  434. smalltalk.addMethod(
  435. unescape('_addCompiledMethod_'),
  436. smalltalk.method({
  437. selector: unescape('addCompiledMethod%3A'),
  438. category: 'compiling',
  439. fn: function (aMethod){
  440. var self=this;
  441. smalltalk.addMethod(aMethod.selector._asSelector(), aMethod, self);
  442. return self;},
  443. args: ["aMethod"],
  444. source: unescape('addCompiledMethod%3A%20aMethod%0A%09%3Csmalltalk.addMethod%28aMethod.selector._asSelector%28%29%2C%20aMethod%2C%20self%29%3E'),
  445. messageSends: [],
  446. referencedClasses: []
  447. }),
  448. smalltalk.Behavior);
  449. smalltalk.addMethod(
  450. unescape('_instanceVariableNames'),
  451. smalltalk.method({
  452. selector: unescape('instanceVariableNames'),
  453. category: 'accessing',
  454. fn: function (){
  455. var self=this;
  456. return self.iVarNames;
  457. return self;},
  458. args: [],
  459. source: unescape('instanceVariableNames%0A%09%3Creturn%20self.iVarNames%3E'),
  460. messageSends: [],
  461. referencedClasses: []
  462. }),
  463. smalltalk.Behavior);
  464. smalltalk.addMethod(
  465. unescape('_comment'),
  466. smalltalk.method({
  467. selector: unescape('comment'),
  468. category: 'accessing',
  469. fn: function (){
  470. var self=this;
  471. return (($receiver = smalltalk.send(self, "_basicAt_", ["comment"])) == nil || $receiver == undefined) ? (function(){return "";})() : $receiver;
  472. return self;},
  473. args: [],
  474. source: unescape('comment%0A%20%20%20%20%5E%28self%20basicAt%3A%20%27comment%27%29%20ifNil%3A%20%5B%27%27%5D'),
  475. messageSends: ["ifNil:", "basicAt:"],
  476. referencedClasses: []
  477. }),
  478. smalltalk.Behavior);
  479. smalltalk.addMethod(
  480. unescape('_comment_'),
  481. smalltalk.method({
  482. selector: unescape('comment%3A'),
  483. category: 'accessing',
  484. fn: function (aString){
  485. var self=this;
  486. smalltalk.send(self, "_basicAt_put_", ["comment", aString]);
  487. return self;},
  488. args: ["aString"],
  489. source: unescape('comment%3A%20aString%0A%20%20%20%20self%20basicAt%3A%20%27comment%27%20put%3A%20aString'),
  490. messageSends: ["basicAt:put:"],
  491. referencedClasses: []
  492. }),
  493. smalltalk.Behavior);
  494. smalltalk.addMethod(
  495. unescape('_commentStamp'),
  496. smalltalk.method({
  497. selector: unescape('commentStamp'),
  498. category: 'accessing',
  499. fn: function (){
  500. var self=this;
  501. return (function($rec){smalltalk.send($rec, "_class_", [self]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send((smalltalk.ClassCommentReader || ClassCommentReader), "_new", []));
  502. return self;},
  503. args: [],
  504. source: unescape('commentStamp%0A%20%20%20%20%5EClassCommentReader%20new%0A%09class%3A%20self%3B%0A%09yourself'),
  505. messageSends: ["class:", "yourself", "new"],
  506. referencedClasses: ["ClassCommentReader"]
  507. }),
  508. smalltalk.Behavior);
  509. smalltalk.addMethod(
  510. unescape('_removeCompiledMethod_'),
  511. smalltalk.method({
  512. selector: unescape('removeCompiledMethod%3A'),
  513. category: 'compiling',
  514. fn: function (aMethod){
  515. var self=this;
  516. delete self.fn.prototype[aMethod.selector._asSelector()];
  517. delete self.fn.prototype.methods[aMethod.selector];
  518. smalltalk.init(self);;
  519. return self;},
  520. args: ["aMethod"],
  521. source: unescape('removeCompiledMethod%3A%20aMethod%0A%09%3Cdelete%20self.fn.prototype%5BaMethod.selector._asSelector%28%29%5D%3B%0A%09delete%20self.fn.prototype.methods%5BaMethod.selector%5D%3B%0A%09smalltalk.init%28self%29%3B%3E'),
  522. messageSends: [],
  523. referencedClasses: []
  524. }),
  525. smalltalk.Behavior);
  526. smalltalk.addMethod(
  527. unescape('_inheritsFrom_'),
  528. smalltalk.method({
  529. selector: unescape('inheritsFrom%3A'),
  530. category: 'testing',
  531. fn: function (aClass){
  532. var self=this;
  533. return smalltalk.send(smalltalk.send(aClass, "_allSubclasses", []), "_includes_", [self]);
  534. return self;},
  535. args: ["aClass"],
  536. source: unescape('inheritsFrom%3A%20aClass%0A%09%5EaClass%20allSubclasses%20includes%3A%20self'),
  537. messageSends: ["includes:", "allSubclasses"],
  538. referencedClasses: []
  539. }),
  540. smalltalk.Behavior);
  541. smalltalk.addMethod(
  542. unescape('_protocols'),
  543. smalltalk.method({
  544. selector: unescape('protocols'),
  545. category: 'accessing',
  546. fn: function (){
  547. var self=this;
  548. var protocols=nil;
  549. (protocols=smalltalk.send((smalltalk.Array || Array), "_new", []));
  550. smalltalk.send(smalltalk.send(self, "_methodDictionary", []), "_do_", [(function(each){return ((($receiver = smalltalk.send(protocols, "_includes_", [smalltalk.send(each, "_category", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(protocols, "_add_", [smalltalk.send(each, "_category", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(protocols, "_add_", [smalltalk.send(each, "_category", [])]);})]));})]);
  551. return smalltalk.send(protocols, "_sort", []);
  552. return self;},
  553. args: [],
  554. source: unescape('protocols%0A%20%20%20%20%7C%20protocols%20%7C%0A%20%20%20%20protocols%20%3A%3D%20Array%20new.%0A%20%20%20%20self%20methodDictionary%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20%28protocols%20includes%3A%20each%20category%29%20ifFalse%3A%20%5B%0A%09%09protocols%20add%3A%20each%20category%5D%5D.%0A%20%20%20%20%5Eprotocols%20sort'),
  555. messageSends: ["new", "do:", "methodDictionary", "ifFalse:", "includes:", "category", "add:", "sort"],
  556. referencedClasses: ["Array"]
  557. }),
  558. smalltalk.Behavior);
  559. smalltalk.addMethod(
  560. unescape('_protocolsDo_'),
  561. smalltalk.method({
  562. selector: unescape('protocolsDo%3A'),
  563. category: 'accessing',
  564. fn: function (aBlock){
  565. var self=this;
  566. var methodsByCategory=nil;
  567. (methodsByCategory=smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_new", []));
  568. smalltalk.send(smalltalk.send(smalltalk.send(self, "_methodDictionary", []), "_values", []), "_do_", [(function(m){return smalltalk.send(smalltalk.send(methodsByCategory, "_at_ifAbsentPut_", [smalltalk.send(m, "_category", []), (function(){return smalltalk.send((smalltalk.Array || Array), "_new", []);})]), "_add_", [m]);})]);
  569. smalltalk.send(smalltalk.send(self, "_protocols", []), "_do_", [(function(category){return smalltalk.send(aBlock, "_value_value_", [category, smalltalk.send(methodsByCategory, "_at_", [category])]);})]);
  570. return self;},
  571. args: ["aBlock"],
  572. source: unescape('protocolsDo%3A%20aBlock%0A%09%22Execute%20aBlock%20for%20each%20method%20category%20with%0A%09its%20collection%20of%20methods%20in%20the%20sort%20order%20of%20category%20name.%22%0A%0A%09%7C%20methodsByCategory%20%7C%0A%09methodsByCategory%20%3A%3D%20HashedCollection%20new.%0A%09self%20methodDictionary%20values%20do%3A%20%5B%3Am%20%7C%0A%09%09%28methodsByCategory%20at%3A%20m%20category%20ifAbsentPut%3A%20%5BArray%20new%5D%29%0A%20%09%09%09add%3A%20m%5D.%20%0A%09self%20protocols%20do%3A%20%5B%3Acategory%20%7C%0A%09%09aBlock%20value%3A%20category%20value%3A%20%28methodsByCategory%20at%3A%20category%29%5D'),
  573. messageSends: ["new", "do:", "values", "methodDictionary", "add:", "at:ifAbsentPut:", "category", "protocols", "value:value:", "at:"],
  574. referencedClasses: ["HashedCollection", "Array"]
  575. }),
  576. smalltalk.Behavior);
  577. smalltalk.addMethod(
  578. unescape('_allInstanceVariableNames'),
  579. smalltalk.method({
  580. selector: unescape('allInstanceVariableNames'),
  581. category: 'accessing',
  582. fn: function (){
  583. var self=this;
  584. var result=nil;
  585. (result=smalltalk.send(smalltalk.send(self, "_instanceVariableNames", []), "_copy", []));
  586. (($receiver = smalltalk.send(self, "_superclass", [])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(result, "_addAll_", [smalltalk.send(smalltalk.send(self, "_superclass", []), "_allInstanceVariableNames", [])]);})() : nil;
  587. return result;
  588. return self;},
  589. args: [],
  590. source: unescape('allInstanceVariableNames%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20self%20instanceVariableNames%20copy.%0A%09self%20superclass%20ifNotNil%3A%20%5B%0A%09%20%20%20%20result%20addAll%3A%20self%20superclass%20allInstanceVariableNames%5D.%0A%09%5Eresult'),
  591. messageSends: ["copy", "instanceVariableNames", "ifNotNil:", "superclass", "addAll:", "allInstanceVariableNames"],
  592. referencedClasses: []
  593. }),
  594. smalltalk.Behavior);
  595. smalltalk.addMethod(
  596. unescape('_methodAt_'),
  597. smalltalk.method({
  598. selector: unescape('methodAt%3A'),
  599. category: 'accessing',
  600. fn: function (aString){
  601. var self=this;
  602. return smalltalk.methods(self)[aString];
  603. return self;},
  604. args: ["aString"],
  605. source: unescape('methodAt%3A%20aString%0A%09%3Creturn%20smalltalk.methods%28self%29%5BaString%5D%3E'),
  606. messageSends: [],
  607. referencedClasses: []
  608. }),
  609. smalltalk.Behavior);
  610. smalltalk.addMethod(
  611. unescape('_methodsFor_stamp_'),
  612. smalltalk.method({
  613. selector: unescape('methodsFor%3Astamp%3A'),
  614. category: 'accessing',
  615. fn: function (aString, aStamp){
  616. var self=this;
  617. return smalltalk.send(self, "_methodsFor_", [aString]);
  618. return self;},
  619. args: ["aString", "aStamp"],
  620. source: unescape('methodsFor%3A%20aString%20stamp%3A%20aStamp%0A%09%22Added%20for%20compatibility%2C%20right%20now%20ignores%20stamp.%22%0A%09%5Eself%20methodsFor%3A%20aString'),
  621. messageSends: ["methodsFor:"],
  622. referencedClasses: []
  623. }),
  624. smalltalk.Behavior);
  625. smalltalk.addMethod(
  626. unescape('_commentStamp_prior_'),
  627. smalltalk.method({
  628. selector: unescape('commentStamp%3Aprior%3A'),
  629. category: 'accessing',
  630. fn: function (aStamp, prior){
  631. var self=this;
  632. return smalltalk.send(self, "_commentStamp", []);
  633. return self;},
  634. args: ["aStamp", "prior"],
  635. source: unescape('commentStamp%3A%20aStamp%20prior%3A%20prior%0A%20%20%20%20%20%20%20%20%5Eself%20commentStamp'),
  636. messageSends: ["commentStamp"],
  637. referencedClasses: []
  638. }),
  639. smalltalk.Behavior);
  640. smalltalk.addMethod(
  641. unescape('_compile_'),
  642. smalltalk.method({
  643. selector: unescape('compile%3A'),
  644. category: 'compiling',
  645. fn: function (aString){
  646. var self=this;
  647. smalltalk.send(self, "_compile_category_", [aString, ""]);
  648. return self;},
  649. args: ["aString"],
  650. source: unescape('compile%3A%20aString%0A%09self%20compile%3A%20aString%20category%3A%20%27%27'),
  651. messageSends: ["compile:category:"],
  652. referencedClasses: []
  653. }),
  654. smalltalk.Behavior);
  655. smalltalk.addMethod(
  656. unescape('_compile_category_'),
  657. smalltalk.method({
  658. selector: unescape('compile%3Acategory%3A'),
  659. category: 'compiling',
  660. fn: function (aString, anotherString){
  661. var self=this;
  662. var method=nil;
  663. (method=smalltalk.send(smalltalk.send((smalltalk.Compiler || Compiler), "_new", []), "_load_forClass_", [aString, self]));
  664. smalltalk.send(method, "_category_", [anotherString]);
  665. smalltalk.send(self, "_addCompiledMethod_", [method]);
  666. return self;},
  667. args: ["aString", "anotherString"],
  668. source: unescape('compile%3A%20aString%20category%3A%20anotherString%0A%09%7C%20method%20%7C%0A%09method%20%3A%3D%20Compiler%20new%20load%3A%20aString%20forClass%3A%20self.%0A%09method%20category%3A%20anotherString.%0A%09self%20addCompiledMethod%3A%20method'),
  669. messageSends: ["load:forClass:", "new", "category:", "addCompiledMethod:"],
  670. referencedClasses: ["Compiler"]
  671. }),
  672. smalltalk.Behavior);
  673. smalltalk.addClass('Class', smalltalk.Behavior, [], 'Kernel-Classes');
  674. smalltalk.Class.comment=unescape('Class%20is%20__the__%20class%20object.%20%0A%0AInstances%20are%20the%20classes%20of%20the%20system.%0AClass%20creation%20is%20done%20throught%20a%20%60ClassBuilder%60')
  675. smalltalk.addMethod(
  676. unescape('_category'),
  677. smalltalk.method({
  678. selector: unescape('category'),
  679. category: 'accessing',
  680. fn: function (){
  681. var self=this;
  682. return (($receiver = smalltalk.send(self, "_package", [])) == nil || $receiver == undefined) ? (function(){return "Unclassified";})() : (function(){return smalltalk.send(smalltalk.send(self, "_package", []), "_name", []);})();
  683. return self;},
  684. args: [],
  685. source: unescape('category%0A%09%5Eself%20package%20ifNil%3A%20%5B%27Unclassified%27%5D%20ifNotNil%3A%20%5Bself%20package%20name%5D'),
  686. messageSends: ["ifNil:ifNotNil:", "package", "name"],
  687. referencedClasses: []
  688. }),
  689. smalltalk.Class);
  690. smalltalk.addMethod(
  691. unescape('_subclass_instanceVariableNames_'),
  692. smalltalk.method({
  693. selector: unescape('subclass%3AinstanceVariableNames%3A'),
  694. category: 'class creation',
  695. fn: function (aString, anotherString){
  696. var self=this;
  697. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, anotherString, nil]);
  698. return self;},
  699. args: ["aString", "anotherString"],
  700. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%0A%09%22Kept%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20anotherString%20package%3A%20nil'),
  701. messageSends: ["subclass:instanceVariableNames:package:"],
  702. referencedClasses: []
  703. }),
  704. smalltalk.Class);
  705. smalltalk.addMethod(
  706. unescape('_subclass_instanceVariableNames_category_'),
  707. smalltalk.method({
  708. selector: unescape('subclass%3AinstanceVariableNames%3Acategory%3A'),
  709. category: 'class creation',
  710. fn: function (aString, aString2, aString3){
  711. var self=this;
  712. smalltalk.send(self, "_deprecatedAPI", []);
  713. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  714. return self;},
  715. args: ["aString", "aString2", "aString3"],
  716. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20category%3A%20aString3%0A%09%22Kept%20for%20compatibility.%22%0A%09self%20deprecatedAPI.%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  717. messageSends: ["deprecatedAPI", "subclass:instanceVariableNames:package:"],
  718. referencedClasses: []
  719. }),
  720. smalltalk.Class);
  721. smalltalk.addMethod(
  722. unescape('_isClass'),
  723. smalltalk.method({
  724. selector: unescape('isClass'),
  725. category: 'testing',
  726. fn: function (){
  727. var self=this;
  728. return true;
  729. return self;},
  730. args: [],
  731. source: unescape('isClass%0A%09%5Etrue'),
  732. messageSends: [],
  733. referencedClasses: []
  734. }),
  735. smalltalk.Class);
  736. smalltalk.addMethod(
  737. unescape('_printString'),
  738. smalltalk.method({
  739. selector: unescape('printString'),
  740. category: 'printing',
  741. fn: function (){
  742. var self=this;
  743. return smalltalk.send(self, "_name", []);
  744. return self;},
  745. args: [],
  746. source: unescape('printString%0A%09%5Eself%20name'),
  747. messageSends: ["name"],
  748. referencedClasses: []
  749. }),
  750. smalltalk.Class);
  751. smalltalk.addMethod(
  752. unescape('_rename_'),
  753. smalltalk.method({
  754. selector: unescape('rename%3A'),
  755. category: 'accessing',
  756. fn: function (aString){
  757. var self=this;
  758. smalltalk[aString] = self;
  759. delete smalltalk[self.className];
  760. self.className = aString;
  761. ;
  762. return self;},
  763. args: ["aString"],
  764. source: unescape('rename%3A%20aString%0A%09%3C%0A%09%09smalltalk%5BaString%5D%20%3D%20self%3B%0A%09%09delete%20smalltalk%5Bself.className%5D%3B%0A%09%09self.className%20%3D%20aString%3B%0A%09%3E'),
  765. messageSends: [],
  766. referencedClasses: []
  767. }),
  768. smalltalk.Class);
  769. smalltalk.addMethod(
  770. unescape('_subclass_instanceVariableNames_classVariableNames_poolDictionaries_category_'),
  771. smalltalk.method({
  772. selector: unescape('subclass%3AinstanceVariableNames%3AclassVariableNames%3ApoolDictionaries%3Acategory%3A'),
  773. category: 'class creation',
  774. fn: function (aString, aString2, classVars, pools, aString3){
  775. var self=this;
  776. return smalltalk.send(self, "_subclass_instanceVariableNames_package_", [aString, aString2, aString3]);
  777. return self;},
  778. args: ["aString", "aString2", "classVars", "pools", "aString3"],
  779. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20classVariableNames%3A%20classVars%20poolDictionaries%3A%20pools%20category%3A%20aString3%0A%09%22Just%20ignore%20class%20variables%20and%20pools.%20Added%20for%20compatibility.%22%0A%09%5Eself%20subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  780. messageSends: ["subclass:instanceVariableNames:package:"],
  781. referencedClasses: []
  782. }),
  783. smalltalk.Class);
  784. smalltalk.addMethod(
  785. unescape('_package'),
  786. smalltalk.method({
  787. selector: unescape('package'),
  788. category: 'accessing',
  789. fn: function (){
  790. var self=this;
  791. return self.pkg;
  792. return self;},
  793. args: [],
  794. source: unescape('package%0A%09%3Creturn%20self.pkg%3E'),
  795. messageSends: [],
  796. referencedClasses: []
  797. }),
  798. smalltalk.Class);
  799. smalltalk.addMethod(
  800. unescape('_package_'),
  801. smalltalk.method({
  802. selector: unescape('package%3A'),
  803. category: 'accessing',
  804. fn: function (aPackage){
  805. var self=this;
  806. self.pkg = aPackage;
  807. return self;},
  808. args: ["aPackage"],
  809. source: unescape('package%3A%20aPackage%0A%09%3Cself.pkg%20%3D%20aPackage%3E'),
  810. messageSends: [],
  811. referencedClasses: []
  812. }),
  813. smalltalk.Class);
  814. smalltalk.addMethod(
  815. unescape('_subclass_instanceVariableNames_package_'),
  816. smalltalk.method({
  817. selector: unescape('subclass%3AinstanceVariableNames%3Apackage%3A'),
  818. category: 'class creation',
  819. fn: function (aString, aString2, aString3){
  820. var self=this;
  821. return smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_superclass_subclass_instanceVariableNames_package_", [self, smalltalk.send(aString, "_asString", []), aString2, aString3]);
  822. return self;},
  823. args: ["aString", "aString2", "aString3"],
  824. source: unescape('subclass%3A%20aString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3%0A%09%5EClassBuilder%20new%0A%09%20%20%20%20superclass%3A%20self%20subclass%3A%20aString%20asString%20instanceVariableNames%3A%20aString2%20package%3A%20aString3'),
  825. messageSends: ["superclass:subclass:instanceVariableNames:package:", "new", "asString"],
  826. referencedClasses: ["ClassBuilder"]
  827. }),
  828. smalltalk.Class);
  829. smalltalk.addClass('Metaclass', smalltalk.Behavior, [], 'Kernel-Classes');
  830. smalltalk.Metaclass.comment=unescape('Metaclass%20is%20the%20root%20of%20the%20class%20hierarchy.%0A%0AMetaclass%20instances%20are%20metaclasses%2C%20one%20for%20each%20real%20class.%20%0AMetaclass%20instances%20have%20a%20single%20instance%2C%20which%20they%20hold%20onto%2C%20which%20is%20the%20class%20that%20they%20are%20the%20metaclass%20of.')
  831. smalltalk.addMethod(
  832. unescape('_instanceClass'),
  833. smalltalk.method({
  834. selector: unescape('instanceClass'),
  835. category: 'accessing',
  836. fn: function (){
  837. var self=this;
  838. return self.instanceClass;
  839. return self;},
  840. args: [],
  841. source: unescape('instanceClass%0A%09%3Creturn%20self.instanceClass%3E'),
  842. messageSends: [],
  843. referencedClasses: []
  844. }),
  845. smalltalk.Metaclass);
  846. smalltalk.addMethod(
  847. unescape('_instanceVariableNames_'),
  848. smalltalk.method({
  849. selector: unescape('instanceVariableNames%3A'),
  850. category: 'accessing',
  851. fn: function (aCollection){
  852. var self=this;
  853. smalltalk.send(smalltalk.send((smalltalk.ClassBuilder || ClassBuilder), "_new", []), "_class_instanceVariableNames_", [self, aCollection]);
  854. return self;},
  855. args: ["aCollection"],
  856. source: unescape('instanceVariableNames%3A%20aCollection%0A%09ClassBuilder%20new%0A%09%20%20%20%20class%3A%20self%20instanceVariableNames%3A%20aCollection'),
  857. messageSends: ["class:instanceVariableNames:", "new"],
  858. referencedClasses: ["ClassBuilder"]
  859. }),
  860. smalltalk.Metaclass);
  861. smalltalk.addMethod(
  862. unescape('_isMetaclass'),
  863. smalltalk.method({
  864. selector: unescape('isMetaclass'),
  865. category: 'testing',
  866. fn: function (){
  867. var self=this;
  868. return true;
  869. return self;},
  870. args: [],
  871. source: unescape('isMetaclass%0A%09%5Etrue'),
  872. messageSends: [],
  873. referencedClasses: []
  874. }),
  875. smalltalk.Metaclass);
  876. smalltalk.addMethod(
  877. unescape('_printString'),
  878. smalltalk.method({
  879. selector: unescape('printString'),
  880. category: 'printing',
  881. fn: function (){
  882. var self=this;
  883. return smalltalk.send(smalltalk.send(smalltalk.send(self, "_instanceClass", []), "_name", []), "__comma", [" class"]);
  884. return self;},
  885. args: [],
  886. source: unescape('printString%0A%09%5Eself%20instanceClass%20name%2C%20%27%20class%27'),
  887. messageSends: [unescape("%2C"), "name", "instanceClass"],
  888. referencedClasses: []
  889. }),
  890. smalltalk.Metaclass);