smalltalk.addPackage('Kernel-Collections', {}); smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections'); smalltalk.addMethod( unescape('_collection'), smalltalk.method({ selector: unescape('collection'), category: 'accessing', fn: function () { var self=this; return self['@collection']; return self;}, args: [], source: unescape('collection%0A%09%5Ecollection'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setCollection_'), smalltalk.method({ selector: unescape('setCollection%3A'), category: 'accessing', fn: function (aCollection) { var self=this; (self['@collection']=aCollection); return self;}, args: ["aCollection"], source: unescape('setCollection%3A%20aCollection%0A%09collection%20%3A%3D%20aCollection'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_position'), smalltalk.method({ selector: unescape('position'), category: 'accessing', fn: function () { var self=this; return (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return (self['@position']=(0));})() : $receiver; return self;}, args: [], source: unescape('position%0A%09%5Eposition%20ifNil%3A%20%5Bposition%20%3A%3D%200%5D'), messageSends: ["ifNil:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_position_'), smalltalk.method({ selector: unescape('position%3A'), category: 'accessing', fn: function (anInteger) { var self=this; (self['@position']=anInteger); return self;}, args: ["anInteger"], source: unescape('position%3A%20anInteger%0A%09position%20%3A%3D%20anInteger'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_streamSize'), smalltalk.method({ selector: unescape('streamSize'), category: 'accessing', fn: function () { var self=this; return self['@streamSize']; return self;}, args: [], source: unescape('streamSize%0A%09%5EstreamSize'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setStreamSize_'), smalltalk.method({ selector: unescape('setStreamSize%3A'), category: 'accessing', fn: function (anInteger) { var self=this; (self['@streamSize']=anInteger); return self;}, args: ["anInteger"], source: unescape('setStreamSize%3A%20anInteger%0A%09streamSize%20%3A%3D%20anInteger'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_contents'), smalltalk.method({ selector: unescape('contents'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]); return self;}, args: [], source: unescape('contents%0A%09%5Eself%20collection%0A%09%20%20%20%20copyFrom%3A%201%20%0A%09%20%20%20%20to%3A%20self%20streamSize'), messageSends: ["copyFrom:to:", "collection", "streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_streamSize", []); return self;}, args: [], source: unescape('size%0A%09%5Eself%20streamSize'), messageSends: ["streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_reset'), smalltalk.method({ selector: unescape('reset'), category: 'actions', fn: function () { var self=this; smalltalk.send(self, "_position_", [(0)]); return self;}, args: [], source: unescape('reset%0A%09self%20position%3A%200'), messageSends: ["position:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_close'), smalltalk.method({ selector: unescape('close'), category: 'actions', fn: function () { var self=this; return self;}, args: [], source: unescape('close'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_flush'), smalltalk.method({ selector: unescape('flush'), category: 'actions', fn: function () { var self=this; return self;}, args: [], source: unescape('flush'), messageSends: [], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_resetContents'), smalltalk.method({ selector: unescape('resetContents'), category: 'actions', fn: function () { var self=this; smalltalk.send(self, "_reset", []); smalltalk.send(self, "_setStreamSize_", [(0)]); return self;}, args: [], source: unescape('resetContents%0A%09self%20reset.%0A%09self%20setStreamSize%3A%200'), messageSends: ["reset", "setStreamSize:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; (function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})(); return self;}, args: ["aBlock"], source: unescape('do%3A%20aBlock%0A%09%5Bself%20atEnd%5D%20whileFalse%3A%20%5BaBlock%20value%3A%20self%20next%5D'), messageSends: ["whileFalse:", "atEnd", "value:", "next"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_setToEnd'), smalltalk.method({ selector: unescape('setToEnd'), category: 'positioning', fn: function () { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('setToEnd%0A%09self%20position%3A%20self%20size'), messageSends: ["position:", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_skip_'), smalltalk.method({ selector: unescape('skip%3A'), category: 'positioning', fn: function (anInteger) { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +anInteger : smalltalk.send($receiver, "__plus", [anInteger])), "_min_max_", [smalltalk.send(self, "_size", []), (0)])]); return self;}, args: ["anInteger"], source: unescape('skip%3A%20anInteger%0A%09self%20position%3A%20%28%28self%20position%20+%20anInteger%29%20min%3A%20self%20size%20max%3A%200%29'), messageSends: ["position:", "min:max:", unescape("+"), "position", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_next'), smalltalk.method({ selector: unescape('next'), category: 'reading', fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return nil;})() : (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return nil;}), (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})])); return self;}, args: [], source: unescape('next%0A%09%5Eself%20atEnd%20%0A%09%09ifTrue%3A%20%5Bnil%5D%0A%09%09ifFalse%3A%20%5B%0A%09%09%09self%20position%3A%20self%20position%20+%201.%20%0A%09%09%09collection%20at%3A%20self%20position%5D'), messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", unescape("+"), "position", "at:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_next_'), smalltalk.method({ selector: unescape('next%3A'), category: 'reading', fn: function (anInteger) { var self=this; var tempCollection=nil; (tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", [])); smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})]));})]); return tempCollection; return self;}, args: ["anInteger"], source: unescape('next%3A%20anInteger%0A%09%7C%20tempCollection%20%7C%0A%09tempCollection%20%3A%3D%20self%20collection%20class%20new.%0A%09anInteger%20timesRepeat%3A%20%5B%0A%09%20%20%20%20self%20atEnd%20ifFalse%3A%20%5B%0A%09%09tempCollection%20add%3A%20self%20next%5D%5D.%0A%09%5EtempCollection'), messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_nextPut_'), smalltalk.method({ selector: unescape('nextPut%3A'), category: 'writing', fn: function (anObject) { var self=this; smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]); smalltalk.send(smalltalk.send(self, "_collection", []), "_at_put_", [smalltalk.send(self, "_position", []), anObject]); smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]); return self;}, args: ["anObject"], source: unescape('nextPut%3A%20anObject%0A%09self%20position%3A%20self%20position%20+%201.%0A%09self%20collection%20at%3A%20self%20position%20put%3A%20anObject.%0A%09self%20setStreamSize%3A%20%28self%20streamSize%20max%3A%20self%20position%29'), messageSends: ["position:", unescape("+"), "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_nextPutAll_'), smalltalk.method({ selector: unescape('nextPutAll%3A'), category: 'writing', fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]); return self;}, args: ["aCollection"], source: unescape('nextPutAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20nextPut%3A%20each%5D'), messageSends: ["do:", "nextPut:"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_peek'), smalltalk.method({ selector: unescape('peek'), category: 'reading', fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})])); return self;}, args: [], source: unescape('peek%0A%09%5Eself%20atEnd%20ifFalse%3A%20%5B%0A%09%20%20%20%20self%20collection%20at%3A%20self%20position%20+%201%5D'), messageSends: ["ifFalse:", "atEnd", "at:", "collection", unescape("+"), "position"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_atEnd'), smalltalk.method({ selector: unescape('atEnd'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('atEnd%0A%09%5Eself%20position%20%3D%20self%20size'), messageSends: [unescape("%3D"), "position", "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_atStart'), smalltalk.method({ selector: unescape('atStart'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]); return self;}, args: [], source: unescape('atStart%0A%09%5Eself%20position%20%3D%200'), messageSends: [unescape("%3D"), "position"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_isEmpty'), smalltalk.method({ selector: unescape('isEmpty'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;}, args: [], source: unescape('isEmpty%0A%09%5Eself%20size%20%3D%200'), messageSends: [unescape("%3D"), "size"], referencedClasses: [] }), smalltalk.Stream); smalltalk.addMethod( unescape('_on_'), smalltalk.method({ selector: unescape('on%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_setCollection_", [aCollection]);smalltalk.send($rec, "_setStreamSize_", [smalltalk.send(aCollection, "_size", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["aCollection"], source: unescape('on%3A%20aCollection%0A%09%20%20%20%20%5Eself%20new%20%0A%09%09setCollection%3A%20aCollection%3B%0A%09%09setStreamSize%3A%20aCollection%20size%3B%0A%09%09yourself'), messageSends: ["setCollection:", "setStreamSize:", "size", "yourself", "new"], referencedClasses: [] }), smalltalk.Stream.klass); smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel-Collections'); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (anAssociation) { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(anAssociation, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(smalltalk.send(self, "_key", []), "__eq", [smalltalk.send(anAssociation, "_key", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_value", []), "__eq", [smalltalk.send(anAssociation, "_value", [])]);})]);})]); return self;}, args: ["anAssociation"], source: unescape('%3D%20anAssociation%0A%09%5Eself%20class%20%3D%20anAssociation%20class%20and%3A%20%5B%0A%09%20%20%20%20self%20key%20%3D%20anAssociation%20key%20and%3A%20%5B%0A%09%09self%20value%20%3D%20anAssociation%20value%5D%5D'), messageSends: ["and:", unescape("%3D"), "class", "key", "value"], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key_'), smalltalk.method({ selector: unescape('key%3A'), category: 'accessing', fn: function (aKey) { var self=this; (self['@key']=aKey); return self;}, args: ["aKey"], source: unescape('key%3A%20aKey%0A%09key%20%3A%3D%20aKey'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key'), smalltalk.method({ selector: unescape('key'), category: 'accessing', fn: function () { var self=this; return self['@key']; return self;}, args: [], source: unescape('key%0A%09%5Ekey'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_value_'), smalltalk.method({ selector: unescape('value%3A'), category: 'accessing', fn: function (aValue) { var self=this; (self['@value']=aValue); return self;}, args: ["aValue"], source: unescape('value%3A%20aValue%0A%09value%20%3A%3D%20aValue'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_value'), smalltalk.method({ selector: unescape('value'), category: 'accessing', fn: function () { var self=this; return self['@value']; return self;}, args: [], source: unescape('value%0A%09%5Evalue'), messageSends: [], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_storeOn_'), smalltalk.method({ selector: unescape('storeOn%3A'), category: 'comparing', fn: function (aStream) { var self=this; smalltalk.send(self['@key'], "_storeOn_", [aStream]); smalltalk.send(aStream, "_nextPutAll_", [unescape("-%3E")]); smalltalk.send(self['@value'], "_storeOn_", [aStream]); return self;}, args: ["aStream"], source: unescape('storeOn%3A%20aStream%0A%09%22Store%20in%20the%20format%20%28key-%3Evalue%29%22%0A%0A%09%22aStream%20nextPutAll%3A%20%27%28%27.%22%0A%09key%20storeOn%3A%20aStream.%0A%09aStream%20nextPutAll%3A%20%27-%3E%27.%0A%09value%20storeOn%3A%20aStream.%0A%09%22aStream%20nextPutAll%3A%20%27%29%27%22'), messageSends: ["storeOn:", "nextPutAll:"], referencedClasses: [] }), smalltalk.Association); smalltalk.addMethod( unescape('_key_value_'), smalltalk.method({ selector: unescape('key%3Avalue%3A'), category: 'instance creation', fn: function (aKey, aValue) { var self=this; return (function($rec){smalltalk.send($rec, "_key_", [aKey]);smalltalk.send($rec, "_value_", [aValue]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["aKey", "aValue"], source: unescape('key%3A%20aKey%20value%3A%20aValue%0A%09%20%20%20%20%5Eself%20new%0A%09%09key%3A%20aKey%3B%0A%09%09value%3A%20aValue%3B%0A%09%09yourself'), messageSends: ["key:", "value:", "yourself", "new"], referencedClasses: [] }), smalltalk.Association.klass); smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_compile_'), smalltalk.method({ selector: unescape('compile%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.compile(aString); return self;}, args: ["aString"], source: unescape('compile%3A%20aString%0A%09%3Creturn%20self.compile%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_exec_'), smalltalk.method({ selector: unescape('exec%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.exec(aString) || nil; return self;}, args: ["aString"], source: unescape('exec%3A%20aString%0A%09%3Creturn%20self.exec%28aString%29%20%7C%7C%20nil%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_test_'), smalltalk.method({ selector: unescape('test%3A'), category: 'evaluating', fn: function (aString) { var self=this; return self.test(aString); return self;}, args: ["aString"], source: unescape('test%3A%20aString%0A%09%3Creturn%20self.test%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression); smalltalk.addMethod( unescape('_fromString_flag_'), smalltalk.method({ selector: unescape('fromString%3Aflag%3A'), category: 'instance creation', fn: function (aString, anotherString) { var self=this; return new RegExp(aString, anotherString); return self;}, args: ["aString", "anotherString"], source: unescape('fromString%3A%20aString%20flag%3A%20anotherString%0A%09%3Creturn%20new%20RegExp%28aString%2C%20anotherString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.RegularExpression.klass); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.send(self, "_fromString_flag_", [aString, ""]); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09%20%20%20%20%5Eself%20fromString%3A%20aString%20flag%3A%20%27%27'), messageSends: ["fromString:flag:"], referencedClasses: [] }), smalltalk.RegularExpression.klass); smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: [], source: unescape('size%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_readStream'), smalltalk.method({ selector: unescape('readStream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_stream", []); return self;}, args: [], source: unescape('readStream%0A%09%5Eself%20stream'), messageSends: ["stream"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_writeStream'), smalltalk.method({ selector: unescape('writeStream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_stream", []); return self;}, args: [], source: unescape('writeStream%0A%09%5Eself%20stream'), messageSends: ["stream"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_stream'), smalltalk.method({ selector: unescape('stream'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [self]); return self;}, args: [], source: unescape('stream%0A%09%5Eself%20streamClass%20on%3A%20self'), messageSends: ["on:", "streamClass"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_streamClass'), smalltalk.method({ selector: unescape('streamClass'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_streamClass", []); return self;}, args: [], source: unescape('streamClass%0A%09%5Eself%20class%20streamClass'), messageSends: ["streamClass", "class"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_addAll_'), smalltalk.method({ selector: unescape('addAll%3A'), category: 'adding/removing', fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]); return aCollection; return self;}, args: ["aCollection"], source: unescape('addAll%3A%20aCollection%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20self%20add%3A%20each%5D.%0A%09%5EaCollection'), messageSends: ["do:", "add:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('__comma'), smalltalk.method({ selector: unescape('%2C'), category: 'copying', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["aCollection"], source: unescape('%2C%20aCollection%0A%09%5Eself%20copy%20%0A%09%20%20%20%20addAll%3A%20aCollection%3B%20%0A%09%20%20%20%20yourself'), messageSends: ["addAll:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_copyWith_'), smalltalk.method({ selector: unescape('copyWith%3A'), category: 'copying', fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["anObject"], source: unescape('copyWith%3A%20anObject%0A%09%5Eself%20copy%20add%3A%20anObject%3B%20yourself'), messageSends: ["add:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_copyWithAll_'), smalltalk.method({ selector: unescape('copyWithAll%3A'), category: 'copying', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;}, args: ["aCollection"], source: unescape('copyWithAll%3A%20aCollection%0A%09%5Eself%20copy%20addAll%3A%20aCollection%3B%20yourself'), messageSends: ["addAll:", "yourself", "copy"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_asArray'), smalltalk.method({ selector: unescape('asArray'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.Array || Array), "_withAll_", [self]); return self;}, args: [], source: unescape('asArray%0A%09%5EArray%20withAll%3A%20self'), messageSends: ["withAll:"], referencedClasses: ["Array"] }), smalltalk.Collection); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; for(var i=0;i<self.length;i++){aBlock(self[i]);}; return self;}, args: ["aBlock"], source: unescape('do%3A%20aBlock%0A%09%3Cfor%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self%5Bi%5D%29%3B%7D%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_collect_'), smalltalk.method({ selector: unescape('collect%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; var newCollection=nil; (newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_do_", [(function(each){return smalltalk.send(newCollection, "_add_", [smalltalk.send(aBlock, "_value_", [each])]);})]); return newCollection; return self;}, args: ["aBlock"], source: unescape('collect%3A%20aBlock%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20newCollection%20add%3A%20%28aBlock%20value%3A%20each%29%5D.%0A%09%5EnewCollection'), messageSends: ["new", "class", "do:", "add:", "value:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_detect_'), smalltalk.method({ selector: unescape('detect%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return smalltalk.send(self, "_detect_ifNone_", [aBlock, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;}, args: ["aBlock"], source: unescape('detect%3A%20aBlock%0A%09%5Eself%20detect%3A%20aBlock%20ifNone%3A%20%5Bself%20errorNotFound%5D'), messageSends: ["detect:ifNone:", "errorNotFound"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_detect_ifNone_'), smalltalk.method({ selector: unescape('detect%3AifNone%3A'), category: 'enumerating', fn: function (aBlock, anotherBlock) { var self=this; for(var i = 0; i < self.length; i++) if(aBlock(self[i])) return self[i]; return anotherBlock(); ; return self;}, args: ["aBlock", "anotherBlock"], source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%3C%0A%09%09for%28var%20i%20%3D%200%3B%20i%20%3C%20self.length%3B%20i++%29%0A%09%09%09if%28aBlock%28self%5Bi%5D%29%29%0A%09%09%09%09return%20self%5Bi%5D%3B%0A%09%09return%20anotherBlock%28%29%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_do_separatedBy_'), smalltalk.method({ selector: unescape('do%3AseparatedBy%3A'), category: 'enumerating', fn: function (aBlock, anotherBlock) { var self=this; var first=nil; (first=true); smalltalk.send(self, "_do_", [(function(each){((($receiver = first).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (first=false);})() : (function(){return smalltalk.send(anotherBlock, "_value", []);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (first=false);}), (function(){return smalltalk.send(anotherBlock, "_value", []);})]));return smalltalk.send(aBlock, "_value_", [each]);})]); return self;}, args: ["aBlock", "anotherBlock"], source: unescape('do%3A%20aBlock%20separatedBy%3A%20anotherBlock%0A%09%7C%20first%20%7C%0A%09first%20%3A%3D%20true.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20first%0A%09%09ifTrue%3A%20%5Bfirst%20%3A%3D%20false%5D%0A%09%09ifFalse%3A%20%5BanotherBlock%20value%5D.%0A%09%20%20%20%20aBlock%20value%3A%20each%5D'), messageSends: ["do:", "ifTrue:ifFalse:", "value", "value:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_inject_into_'), smalltalk.method({ selector: unescape('inject%3Ainto%3A'), category: 'enumerating', fn: function (anObject, aBlock) { var self=this; var result=nil; (result=anObject); smalltalk.send(self, "_do_", [(function(each){return (result=smalltalk.send(aBlock, "_value_value_", [result, each]));})]); return result; return self;}, args: ["anObject", "aBlock"], source: unescape('inject%3A%20anObject%20into%3A%20aBlock%0A%09%7C%20result%20%7C%0A%09result%20%3A%3D%20anObject.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%20%0A%09%20%20%20%20result%20%3A%3D%20aBlock%20value%3A%20result%20value%3A%20each%5D.%0A%09%5Eresult'), messageSends: ["do:", "value:value:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_reject_'), smalltalk.method({ selector: unescape('reject%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return smalltalk.send(self, "_select_", [(function(each){return smalltalk.send(smalltalk.send(aBlock, "_value_", [each]), "__eq", [false]);})]); return self;}, args: ["aBlock"], source: unescape('reject%3A%20aBlock%0A%09%5Eself%20select%3A%20%5B%3Aeach%20%7C%20%28aBlock%20value%3A%20each%29%20%3D%20false%5D'), messageSends: ["select:", unescape("%3D"), "value:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_select_'), smalltalk.method({ selector: unescape('select%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; var stream=nil; (stream=smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "_new", []), "_writeStream", [])); smalltalk.send(self, "_do_", [(function(each){return ((($receiver = smalltalk.send(aBlock, "_value_", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(stream, "_nextPut_", [each]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(stream, "_nextPut_", [each]);})]));})]); return smalltalk.send(stream, "_contents", []); return self;}, args: ["aBlock"], source: unescape('select%3A%20aBlock%0A%09%7C%20stream%20%7C%0A%09stream%20%3A%3D%20self%20class%20new%20writeStream.%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20%28aBlock%20value%3A%20each%29%20ifTrue%3A%20%5B%0A%09%09stream%20nextPut%3A%20each%5D%5D.%0A%09%5Estream%20contents'), messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_errorNotFound'), smalltalk.method({ selector: unescape('errorNotFound'), category: 'error handling', fn: function () { var self=this; smalltalk.send(self, "_error_", ["Object is not in the collection"]); return self;}, args: [], source: unescape('errorNotFound%0A%09self%20error%3A%20%27Object%20is%20not%20in%20the%20collection%27'), messageSends: ["error:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_includes_'), smalltalk.method({ selector: unescape('includes%3A'), category: 'testing', fn: function (anObject) { var self=this; var i = self.length; while (i--) { if (smalltalk.send(self[i], "__eq", [anObject])) {return true;} } return false ; return self;}, args: ["anObject"], source: unescape('includes%3A%20anObject%0A%09%3C%0A%09%09var%20i%20%3D%20self.length%3B%0A%09%09while%20%28i--%29%20%7B%0A%09%09%09if%20%28smalltalk.send%28self%5Bi%5D%2C%20%22__eq%22%2C%20%5BanObject%5D%29%29%20%7Breturn%20true%3B%7D%09%0A%09%09%7D%0A%09%09return%20false%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_notEmpty'), smalltalk.method({ selector: unescape('notEmpty'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_not", []); return self;}, args: [], source: unescape('notEmpty%0A%09%5Eself%20isEmpty%20not'), messageSends: ["not", "isEmpty"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_isEmpty'), smalltalk.method({ selector: unescape('isEmpty'), category: 'testing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;}, args: [], source: unescape('isEmpty%0A%09%5Eself%20size%20%3D%200'), messageSends: [unescape("%3D"), "size"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; return smalltalk.send(self, "_remove_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;}, args: ["anObject"], source: unescape('remove%3A%20anObject%0A%20%20%20%20%5Eself%20remove%3A%20anObject%20ifAbsent%3A%20%5Bself%20errorNotFound%5D'), messageSends: ["remove:ifAbsent:", "errorNotFound"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_asSet'), smalltalk.method({ selector: unescape('asSet'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.Set || Set), "_withAll_", [self]); return self;}, args: [], source: unescape('asSet%0A%09%5ESet%20withAll%3A%20self'), messageSends: ["withAll:"], referencedClasses: ["Set"] }), smalltalk.Collection); smalltalk.addMethod( unescape('_ifNotEmpty_'), smalltalk.method({ selector: unescape('ifNotEmpty%3A'), category: 'testing', fn: function (aBlock) { var self=this; smalltalk.send(smalltalk.send(self, "_notEmpty", []), "_ifTrue_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('ifNotEmpty%3A%20aBlock%0A%09self%20notEmpty%20ifTrue%3A%20aBlock.'), messageSends: ["ifTrue:", "notEmpty"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_ifEmpty_'), smalltalk.method({ selector: unescape('ifEmpty%3A'), category: 'testing', fn: function (aBlock) { var self=this; smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_ifTrue_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('ifEmpty%3A%20aBlock%0A%09self%20isEmpty%20ifTrue%3A%20aBlock.'), messageSends: ["ifTrue:", "isEmpty"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_copyWithoutAll_'), smalltalk.method({ selector: unescape('copyWithoutAll%3A'), category: 'copying', fn: function (aCollection) { var self=this; return smalltalk.send(self, "_reject_", [(function(each){return smalltalk.send(aCollection, "_includes_", [each]);})]); return self;}, args: ["aCollection"], source: unescape('copyWithoutAll%3A%20aCollection%0A%09%22Answer%20a%20copy%20of%20the%20receiver%20that%20does%20not%20contain%20any%20elements%20%0A%09equal%20to%20those%20in%20aCollection.%22%0A%0A%09%5E%20self%20reject%3A%20%5B%3Aeach%20%7C%20aCollection%20includes%3A%20each%5D'), messageSends: ["reject:", "includes:"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_remove_ifAbsent_'), smalltalk.method({ selector: unescape('remove%3AifAbsent%3A'), category: 'adding/removing', fn: function (anObject, aBlock) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["anObject", "aBlock"], source: unescape('remove%3A%20anObject%20ifAbsent%3A%20aBlock%0A%20%20%20%20self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_asJSONString'), smalltalk.method({ selector: unescape('asJSONString'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.JSON || JSON), "_stringify_", [smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJSONString", []);})])]); return self;}, args: [], source: unescape('asJSONString%0A%09%5EJSON%20stringify%3A%20%28self%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJSONString%5D%29'), messageSends: ["stringify:", "collect:", "asJSONString"], referencedClasses: ["JSON"] }), smalltalk.Collection); smalltalk.addMethod( unescape('_asOrderedCollection'), smalltalk.method({ selector: unescape('asOrderedCollection'), category: 'converting', fn: function () { var self=this; return smalltalk.send(self, "_asArray", []); return self;}, args: [], source: unescape('asOrderedCollection%0A%09%5Eself%20asArray'), messageSends: ["asArray"], referencedClasses: [] }), smalltalk.Collection); smalltalk.addMethod( unescape('_streamClass'), smalltalk.method({ selector: unescape('streamClass'), category: 'accessing', fn: function () { var self=this; return (smalltalk.Stream || Stream); return self;}, args: [], source: unescape('streamClass%0A%09%20%20%20%20%5EStream'), messageSends: [], referencedClasses: ["Stream"] }), smalltalk.Collection.klass); smalltalk.addMethod( unescape('_with_'), smalltalk.method({ selector: unescape('with%3A'), category: 'instance creation', fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["anObject"], source: unescape('with%3A%20anObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20anObject%3B%0A%09%09yourself'), messageSends: ["add:", "yourself", "new"], referencedClasses: [] }), smalltalk.Collection.klass); smalltalk.addMethod( unescape('_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3A'), category: 'instance creation', fn: function (anObject, anotherObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [anObject]);smalltalk.send($rec, "_add_", [anotherObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["anObject", "anotherObject"], source: unescape('with%3A%20anObject%20with%3A%20anotherObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20anObject%3B%0A%09%09add%3A%20anotherObject%3B%0A%09%09yourself'), messageSends: ["add:", "yourself", "new"], referencedClasses: [] }), smalltalk.Collection.klass); smalltalk.addMethod( unescape('_with_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3Awith%3A'), category: 'instance creation', fn: function (firstObject, secondObject, thirdObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [firstObject]);smalltalk.send($rec, "_add_", [secondObject]);smalltalk.send($rec, "_add_", [thirdObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["firstObject", "secondObject", "thirdObject"], source: unescape('with%3A%20firstObject%20with%3A%20secondObject%20with%3A%20thirdObject%0A%09%20%20%20%20%5Eself%20new%0A%09%09add%3A%20firstObject%3B%0A%09%09add%3A%20secondObject%3B%0A%09%09add%3A%20thirdObject%3B%0A%09%09yourself'), messageSends: ["add:", "yourself", "new"], referencedClasses: [] }), smalltalk.Collection.klass); smalltalk.addMethod( unescape('_withAll_'), smalltalk.method({ selector: unescape('withAll%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;}, args: ["aCollection"], source: unescape('withAll%3A%20aCollection%0A%09%20%20%20%20%5Eself%20new%0A%09%09addAll%3A%20aCollection%3B%0A%09%09yourself'), messageSends: ["addAll:", "yourself", "new"], referencedClasses: [] }), smalltalk.Collection.klass); smalltalk.addMethod( unescape('_new_'), smalltalk.method({ selector: unescape('new%3A'), category: 'instance creation', fn: function (anInteger) { var self=this; return smalltalk.send(self, "_new", []); return self;}, args: ["anInteger"], source: unescape('new%3A%20anInteger%0A%09%5Eself%20new'), messageSends: ["new"], referencedClasses: [] }), smalltalk.Collection.klass); smalltalk.addClass('SequenceableCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_at_'), smalltalk.method({ selector: unescape('at%3A'), category: 'accessing', fn: function (anIndex) { var self=this; return smalltalk.send(self, "_at_ifAbsent_", [anIndex, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;}, args: ["anIndex"], source: unescape('at%3A%20anIndex%0A%09%5Eself%20at%3A%20anIndex%20ifAbsent%3A%20%5B%0A%09%20%20%20%20self%20errorNotFound%5D'), messageSends: ["at:ifAbsent:", "errorNotFound"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (anIndex, anObject) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["anIndex", "anObject"], source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_copyFrom_to_'), smalltalk.method({ selector: unescape('copyFrom%3Ato%3A'), category: 'copying', fn: function (anIndex, anotherIndex) { var self=this; var range=nil; var newCollection=nil; (range=smalltalk.send(anIndex, "_to_", [anotherIndex])); (newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new_", [smalltalk.send(range, "_size", [])])); smalltalk.send(range, "_withIndexDo_", [(function(each, i){return smalltalk.send(newCollection, "_at_put_", [i, smalltalk.send(self, "_at_", [each])]);})]); return newCollection; return self;}, args: ["anIndex", "anotherIndex"], source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09%7C%20range%20newCollection%20%7C%0A%09range%20%3A%3D%20anIndex%20to%3A%20anotherIndex.%0A%09newCollection%20%3A%3D%20self%20class%20new%3A%20range%20size.%0A%09range%20withIndexDo%3A%20%5B%3Aeach%20%3Ai%20%7C%0A%09%20%20%20%20newCollection%20at%3A%20i%20put%3A%20%28self%20at%3A%20each%29%5D.%0A%09%5EnewCollection'), messageSends: ["to:", "new:", "class", "size", "withIndexDo:", "at:put:", "at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_first'), smalltalk.method({ selector: unescape('first'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [(1)]); return self;}, args: [], source: unescape('first%0A%09%5Eself%20at%3A%201'), messageSends: ["at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_fourth'), smalltalk.method({ selector: unescape('fourth'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [(4)]); return self;}, args: [], source: unescape('fourth%0A%09%5Eself%20at%3A%204'), messageSends: ["at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_last'), smalltalk.method({ selector: unescape('last'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('last%0A%09%5Eself%20at%3A%20self%20size'), messageSends: ["at:", "size"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_second'), smalltalk.method({ selector: unescape('second'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [(2)]); return self;}, args: [], source: unescape('second%0A%09%5Eself%20at%3A%202'), messageSends: ["at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_third'), smalltalk.method({ selector: unescape('third'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [(3)]); return self;}, args: [], source: unescape('third%0A%09%5Eself%20at%3A%203'), messageSends: ["at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_removeLast'), smalltalk.method({ selector: unescape('removeLast'), category: 'adding', fn: function () { var self=this; smalltalk.send(self, "_remove_", [smalltalk.send(self, "_last", [])]); return self;}, args: [], source: unescape('removeLast%0A%09self%20remove%3A%20self%20last'), messageSends: ["remove:", "last"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_addLast_'), smalltalk.method({ selector: unescape('addLast%3A'), category: 'adding', fn: function (anObject) { var self=this; smalltalk.send(self, "_add_", [anObject]); return self;}, args: ["anObject"], source: unescape('addLast%3A%20anObject%0A%09self%20add%3A%20anObject'), messageSends: ["add:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_withIndexDo_'), smalltalk.method({ selector: unescape('withIndexDo%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; for(var i=0;i<self.length;i++){aBlock(self[i], i+1);}; return self;}, args: ["aBlock"], source: unescape('withIndexDo%3A%20aBlock%0A%09%3Cfor%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7BaBlock%28self%5Bi%5D%2C%20i+1%29%3B%7D%3E'), messageSends: [], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_allButFirst'), smalltalk.method({ selector: unescape('allButFirst'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_copyFrom_to_", [(2), smalltalk.send(self, "_size", [])]); return self;}, args: [], source: unescape('allButFirst%0A%09%5Eself%20copyFrom%3A%202%20to%3A%20self%20size'), messageSends: ["copyFrom:to:", "size"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_allButLast'), smalltalk.method({ selector: unescape('allButLast'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_copyFrom_to_", [(1), ((($receiver = smalltalk.send(self, "_size", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]))]); return self;}, args: [], source: unescape('allButLast%0A%09%5Eself%20copyFrom%3A%201%20to%3A%20self%20size%20-%201'), messageSends: ["copyFrom:to:", unescape("-"), "size"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_indexOf_'), smalltalk.method({ selector: unescape('indexOf%3A'), category: 'accessing', fn: function (anObject) { var self=this; return smalltalk.send(self, "_indexOf_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;}, args: ["anObject"], source: unescape('indexOf%3A%20anObject%0A%09%5Eself%20indexOf%3A%20anObject%20ifAbsent%3A%20%5Bself%20errorNotFound%5D'), messageSends: ["indexOf:ifAbsent:", "errorNotFound"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_indexOf_ifAbsent_'), smalltalk.method({ selector: unescape('indexOf%3AifAbsent%3A'), category: 'accessing', fn: function (anObject, aBlock) { var self=this; for(var i=0;i<self.length;i++){ if(self[i].__eq(anObject)) {return i+1} } return aBlock(); ; return self;}, args: ["anObject", "aBlock"], source: unescape('indexOf%3A%20anObject%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%7B%0A%09%09%09if%28self%5Bi%5D.__eq%28anObject%29%29%20%7Breturn%20i+1%7D%0A%09%09%7D%0A%09%09return%20aBlock%28%29%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_indexOf_startingAt_ifAbsent_'), smalltalk.method({ selector: unescape('indexOf%3AstartingAt%3AifAbsent%3A'), category: 'accessing', fn: function (anObject, start, aBlock) { var self=this; for(var i=start-1;i<self.length;i++){ if(self[i].__eq(anObject)) {return i+1} } return aBlock(); ; return self;}, args: ["anObject", "start", "aBlock"], source: unescape('indexOf%3A%20anObject%20startingAt%3A%20start%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09for%28var%20i%3Dstart-1%3Bi%3Cself.length%3Bi++%29%7B%0A%09%09%09if%28self%5Bi%5D.__eq%28anObject%29%29%20%7Breturn%20i+1%7D%0A%09%09%7D%0A%09%09return%20aBlock%28%29%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_indexOf_startingAt_'), smalltalk.method({ selector: unescape('indexOf%3AstartingAt%3A'), category: 'accessing', fn: function (anObject, start) { var self=this; return smalltalk.send(self, "_indexOf_startingAt_ifAbsent_", [anObject, start, (function(){return (0);})]); return self;}, args: ["anObject", "start"], source: unescape('indexOf%3A%20anObject%20startingAt%3A%20start%0A%09%22Answer%20the%20index%20of%20the%20first%20occurence%20of%20anElement%20after%20start%0A%09within%20the%20receiver.%20If%20the%20receiver%20does%20not%20contain%20anElement%2C%20%0A%09answer%200.%22%0A%09%5Eself%20indexOf%3A%20anObject%20startingAt%3A%20start%20ifAbsent%3A%20%5B0%5D'), messageSends: ["indexOf:startingAt:ifAbsent:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_reversed'), smalltalk.method({ selector: unescape('reversed'), category: 'converting', fn: function () { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: [], source: unescape('reversed%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_atRandom'), smalltalk.method({ selector: unescape('atRandom'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self, "_at_", [smalltalk.send(smalltalk.send(self, "_size", []), "_atRandom", [])]); return self;}, args: [], source: unescape('atRandom%0A%09%5E%20self%20at%3A%20self%20size%20atRandom'), messageSends: ["at:", "atRandom", "size"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aCollection) { var self=this; try{((($receiver = smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aCollection, "_class", [])]), "_and_", [(function(){return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [smalltalk.send(aCollection, "_size", [])]);})])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); smalltalk.send(self, "_withIndexDo_", [(function(each, i){return ((($receiver = smalltalk.send(smalltalk.send(aCollection, "_at_", [i]), "__eq", [each])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})]));})]); (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return true}})})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}}, args: ["aCollection"], source: unescape('%3D%20aCollection%0A%09%28self%20class%20%3D%20aCollection%20class%20and%3A%20%5B%0A%09%09self%20size%20%3D%20aCollection%20size%5D%29%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09self%20withIndexDo%3A%20%5B%3Aeach%20%3Ai%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28aCollection%20at%3A%20i%29%20%3D%20each%20ifFalse%3A%20%5B%5Efalse%5D%5D.%0A%09%5Etrue'), messageSends: ["ifFalse:", "and:", unescape("%3D"), "class", "size", "withIndexDo:", "at:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_shallowCopy'), smalltalk.method({ selector: unescape('shallowCopy'), category: 'copying', fn: function () { var self=this; var newCollection=nil; (newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new_", [smalltalk.send(self, "_size", [])])); smalltalk.send(self, "_withIndexDo_", [(function(each, index){return smalltalk.send(newCollection, "_at_put_", [index, each]);})]); return newCollection; return self;}, args: [], source: unescape('shallowCopy%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new%3A%20self%20size.%0A%09self%20withIndexDo%3A%20%5B%20%3Aeach%20%3Aindex%20%7C%20%0A%09%09newCollection%20at%3A%20index%20put%3A%20each%5D.%0A%09%5EnewCollection'), messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_deepCopy'), smalltalk.method({ selector: unescape('deepCopy'), category: 'copying', fn: function () { var self=this; var newCollection=nil; (newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new_", [smalltalk.send(self, "_size", [])])); smalltalk.send(self, "_withIndexDo_", [(function(each, index){return smalltalk.send(newCollection, "_at_put_", [index, smalltalk.send(each, "_deepCopy", [])]);})]); return newCollection; return self;}, args: [], source: unescape('deepCopy%0A%09%7C%20newCollection%20%7C%0A%09newCollection%20%3A%3D%20self%20class%20new%3A%20self%20size.%0A%09self%20withIndexDo%3A%20%5B%3Aeach%20%3Aindex%20%7C%20%0A%09%09newCollection%20at%3A%20index%20put%3A%20each%20deepCopy%5D.%0A%09%5EnewCollection'), messageSends: ["new:", "class", "size", "withIndexDo:", "at:put:", "deepCopy"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_printString'), smalltalk.method({ selector: unescape('printString'), category: 'printing', fn: function () { var self=this; var str=nil; (str=smalltalk.send("", "_writeStream", [])); smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.Collection), "__comma", [unescape("%20%28")])]); smalltalk.send(self, "_do_separatedBy_", [(function(each){return smalltalk.send(str, "_nextPutAll_", [smalltalk.send(each, "_printString", [])]);}), (function(){return smalltalk.send(str, "_nextPutAll_", [" "]);})]); smalltalk.send(str, "_nextPutAll_", [unescape("%29")]); return smalltalk.send(str, "_contents", []); return self;}, args: [], source: unescape('printString%0A%09%7C%20str%20%7C%0A%09str%20%3A%3D%20%27%27%20writeStream.%0A%09str%20nextPutAll%3A%20super%20printString%2C%20%27%20%28%27.%0A%09self%20%0A%09%09do%3A%20%5B%3Aeach%20%7C%20str%20nextPutAll%3A%20each%20printString%5D%0A%09%09separatedBy%3A%20%5Bstr%20nextPutAll%3A%20%27%20%27%5D.%0A%09str%20nextPutAll%3A%20%27%29%27.%0A%09%5Estr%20contents'), messageSends: ["writeStream", "nextPutAll:", unescape("%2C"), "printString", "do:separatedBy:", "contents"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addMethod( unescape('_first_'), smalltalk.method({ selector: unescape('first%3A'), category: 'accessing', fn: function (n){ var self=this; return smalltalk.send(self, "_copyFrom_to_", [(1), n]); return self;}, args: ["n"], source: unescape('first%3A%20n%0A%09%22Answer%20the%20first%20n%20elements%20of%20the%20receiver.%0A%09Raise%20an%20error%20if%20there%20are%20not%20enough%20elements.%22%0A%0A%09%5E%20self%20copyFrom%3A%201%20to%3A%20n'), messageSends: ["copyFrom:to:"], referencedClasses: [] }), smalltalk.SequenceableCollection); smalltalk.addClass('CharacterArray', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (anIndex, anObject) { var self=this; smalltalk.send(self, "_errorReadOnly", []); return self;}, args: ["anIndex", "anObject"], source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09self%20errorReadOnly'), messageSends: ["errorReadOnly"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding', fn: function (anObject) { var self=this; smalltalk.send(self, "_errorReadOnly", []); return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09self%20errorReadOnly'), messageSends: ["errorReadOnly"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('__comma'), smalltalk.method({ selector: unescape('%2C'), category: 'copying', fn: function (aString) { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "__comma", [smalltalk.send(aString, "_asString", [])]); return self;}, args: ["aString"], source: unescape('%2C%20aString%0A%09%5Eself%20asString%2C%20aString%20asString'), messageSends: [unescape("%2C"), "asString"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_asString'), smalltalk.method({ selector: unescape('asString'), category: 'converting', fn: function () { var self=this; return smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: [], source: unescape('asString%0A%09%5Eself%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_asNumber'), smalltalk.method({ selector: unescape('asNumber'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asNumber", []); return self;}, args: [], source: unescape('asNumber%0A%09%5Eself%20asString%20asNumber'), messageSends: ["asNumber", "asString"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_errorReadOnly'), smalltalk.method({ selector: unescape('errorReadOnly'), category: 'error handling', fn: function () { var self=this; smalltalk.send(self, "_error_", [unescape("Object%20is%20read-only")]); return self;}, args: [], source: unescape('errorReadOnly%0A%09self%20error%3A%20%27Object%20is%20read-only%27'), messageSends: ["error:"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_printString'), smalltalk.method({ selector: unescape('printString'), category: 'printing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_printString", []); return self;}, args: [], source: unescape('printString%0A%09%5Eself%20asString%20printString'), messageSends: ["printString", "asString"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding', fn: function (anObject) { var self=this; smalltalk.send(self, "_errorReadOnly", []); return self;}, args: ["anObject"], source: unescape('remove%3A%20anObject%0A%09self%20errorReadOnly'), messageSends: ["errorReadOnly"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_asUppercase'), smalltalk.method({ selector: unescape('asUppercase'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asUppercase", [])]); return self;}, args: [], source: unescape('asUppercase%0A%09%5Eself%20class%20fromString%3A%20self%20asString%20asUppercase'), messageSends: ["fromString:", "class", "asUppercase", "asString"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_asSymbol'), smalltalk.method({ selector: unescape('asSymbol'), category: 'converting', fn: function () { var self=this; return smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: [], source: unescape('asSymbol%0A%09%5Eself%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_asLowercase'), smalltalk.method({ selector: unescape('asLowercase'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asLowercase", [])]); return self;}, args: [], source: unescape('asLowercase%0A%09%5Eself%20class%20fromString%3A%20self%20asString%20asLowercase'), messageSends: ["fromString:", "class", "asLowercase", "asString"], referencedClasses: [] }), smalltalk.CharacterArray); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09self%20subclassResponsibility'), messageSends: ["subclassResponsibility"], referencedClasses: [] }), smalltalk.CharacterArray.klass); smalltalk.addClass('String', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aString) { var self=this; try{((($receiver = smalltalk.send(smalltalk.send(aString, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); return String(self) === String(aString); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}}, args: ["aString"], source: unescape('%3D%20aString%0A%09aString%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%3Creturn%20String%28self%29%20%3D%3D%3D%20String%28aString%29%3E'), messageSends: ["ifFalse:", unescape("%3D"), "class"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return self.length; return self;}, args: [], source: unescape('size%0A%09%3Creturn%20self.length%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; return self[anIndex - 1] || aBlock(); return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%20%7C%7C%20aBlock%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_escaped'), smalltalk.method({ selector: unescape('escaped'), category: 'accessing', fn: function () { var self=this; return escape(self); return self;}, args: [], source: unescape('escaped%0A%09%3Creturn%20escape%28self%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_unescaped'), smalltalk.method({ selector: unescape('unescaped'), category: 'accessing', fn: function () { var self=this; return unescape(self); return self;}, args: [], source: unescape('unescaped%0A%09%3Creturn%20unescape%28self%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__comma'), smalltalk.method({ selector: unescape('%2C'), category: 'copying', fn: function (aString) { var self=this; return self + aString; return self;}, args: ["aString"], source: unescape('%2C%20aString%0A%09%3Creturn%20self%20+%20aString%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_copyFrom_to_'), smalltalk.method({ selector: unescape('copyFrom%3Ato%3A'), category: 'copying', fn: function (anIndex, anotherIndex) { var self=this; return self.substring(anIndex - 1, anotherIndex); return self;}, args: ["anIndex", "anotherIndex"], source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09%3Creturn%20self.substring%28anIndex%20-%201%2C%20anotherIndex%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_shallowCopy'), smalltalk.method({ selector: unescape('shallowCopy'), category: 'copying', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [self]); return self;}, args: [], source: unescape('shallowCopy%0A%09%5Eself%20class%20fromString%3A%20self'), messageSends: ["fromString:", "class"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_deepCopy'), smalltalk.method({ selector: unescape('deepCopy'), category: 'copying', fn: function () { var self=this; return smalltalk.send(self, "_shallowCopy", []); return self;}, args: [], source: unescape('deepCopy%0A%09%5Eself%20shallowCopy'), messageSends: ["shallowCopy"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asSelector'), smalltalk.method({ selector: unescape('asSelector'), category: 'converting', fn: function () { var self=this; var selector=nil; (selector=smalltalk.send("_", "__comma", [self])); (selector=smalltalk.send(selector, "_replace_with_", [":", "_"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B+%5D"), "_plus"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("-"), "_minus"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B*%5D"), "_star"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B/%5D"), "_slash"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%3E"), "_gt"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%3C"), "_lt"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%3D"), "_eq"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%2C"), "_comma"])); (selector=smalltalk.send(selector, "_replace_with_", [unescape("%5B@%5D"), "_at"])); return selector; return self;}, args: [], source: unescape('asSelector%0A%09%22If%20you%20change%20this%20method%2C%20change%20smalltalk.convertSelector%20too%20%28see%20js/boot.js%20file%29%22%0A%0A%09%7C%20selector%20%7C%0A%09selector%20%3A%3D%20%27_%27%2C%20self.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%3A%27%20with%3A%20%27_%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B+%5D%27%20with%3A%20%27_plus%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27-%27%20with%3A%20%27_minus%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B*%5D%27%20with%3A%20%27_star%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B/%5D%27%20with%3A%20%27_slash%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%3E%27%20with%3A%20%27_gt%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%3C%27%20with%3A%20%27_lt%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%3D%27%20with%3A%20%27_eq%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%2C%27%20with%3A%20%27_comma%27.%0A%09selector%20%3A%3D%20selector%20replace%3A%20%27%5B@%5D%27%20with%3A%20%27_at%27.%0A%09%5Eselector'), messageSends: [unescape("%2C"), "replace:with:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1) return "unescape(\"" + escape(self) + "\")"; else return "\"" + self + "\""; ; return self;}, args: [], source: unescape('asJavascript%0A%09%3C%0A%09%09if%28self.search%28/%5E%5Ba-zA-Z0-9_%3A.%24%20%5D*%24/%29%20%3D%3D%20-1%29%0A%09%09%09return%20%22unescape%28%5C%22%22%20+%20escape%28self%29%20+%20%22%5C%22%29%22%3B%0A%09%09else%0A%09%09%09return%20%22%5C%22%22%20+%20self%20+%20%22%5C%22%22%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_replace_with_'), smalltalk.method({ selector: unescape('replace%3Awith%3A'), category: 'regular expressions', fn: function (aString, anotherString) { var self=this; return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [aString, "g"]), anotherString]); return self;}, args: ["aString", "anotherString"], source: unescape('replace%3A%20aString%20with%3A%20anotherString%0A%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20aString%20flag%3A%20%27g%27%29%20with%3A%20anotherString'), messageSends: ["replaceRegexp:with:", "fromString:flag:"], referencedClasses: ["RegularExpression"] }), smalltalk.String); smalltalk.addMethod( unescape('_replaceRegexp_with_'), smalltalk.method({ selector: unescape('replaceRegexp%3Awith%3A'), category: 'regular expressions', fn: function (aRegexp, aString) { var self=this; return self.replace(aRegexp, aString); return self;}, args: ["aRegexp", "aString"], source: unescape('replaceRegexp%3A%20aRegexp%20with%3A%20aString%0A%09%3Creturn%20self.replace%28aRegexp%2C%20aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_tokenize_'), smalltalk.method({ selector: unescape('tokenize%3A'), category: 'converting', fn: function (aString) { var self=this; return self.split(aString); return self;}, args: ["aString"], source: unescape('tokenize%3A%20aString%0A%09%3Creturn%20self.split%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_match_'), smalltalk.method({ selector: unescape('match%3A'), category: 'regular expressions', fn: function (aRegexp) { var self=this; return self.search(aRegexp) != -1; return self;}, args: ["aRegexp"], source: unescape('match%3A%20aRegexp%0A%09%3Creturn%20self.search%28aRegexp%29%20%21%3D%20-1%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asString'), smalltalk.method({ selector: unescape('asString'), category: 'converting', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('asString%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asNumber'), smalltalk.method({ selector: unescape('asNumber'), category: 'converting', fn: function () { var self=this; return Number(self); return self;}, args: [], source: unescape('asNumber%0A%09%3Creturn%20Number%28self%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_printString'), smalltalk.method({ selector: unescape('printString'), category: 'printing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("%27"), "__comma", [self]), "__comma", [unescape("%27")]); return self;}, args: [], source: unescape('printString%0A%09%5E%27%27%27%27%2C%20self%2C%20%27%27%27%27'), messageSends: [unescape("%2C")], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_printNl'), smalltalk.method({ selector: unescape('printNl'), category: 'printing', fn: function () { var self=this; console.log(self); return self;}, args: [], source: unescape('printNl%0A%09%3Cconsole.log%28self%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_isString'), smalltalk.method({ selector: unescape('isString'), category: 'testing', fn: function () { var self=this; return true; return self;}, args: [], source: unescape('isString%0A%09%5Etrue'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__gt'), smalltalk.method({ selector: unescape('%3E'), category: 'comparing', fn: function (aString) { var self=this; return String(self) > aString._asString(); return self;}, args: ["aString"], source: unescape('%3E%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__lt'), smalltalk.method({ selector: unescape('%3C'), category: 'comparing', fn: function (aString) { var self=this; return String(self) < aString._asString(); return self;}, args: ["aString"], source: unescape('%3C%20aString%0A%09%3Creturn%20String%28self%29%20%3C%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__gt_eq'), smalltalk.method({ selector: unescape('%3E%3D'), category: 'comparing', fn: function (aString) { var self=this; return String(self) >= aString._asString(); return self;}, args: ["aString"], source: unescape('%3E%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3E%3E%3D%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('__lt_eq'), smalltalk.method({ selector: unescape('%3C%3D'), category: 'comparing', fn: function (aString) { var self=this; return String(self) <= aString._asString(); return self;}, args: ["aString"], source: unescape('%3C%3D%20aString%0A%09%3Creturn%20String%28self%29%20%3C%3D%20aString._asString%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimLeft_'), smalltalk.method({ selector: unescape('trimLeft%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5E%5B"), "__comma", [separators]), "__comma", [unescape("%5D+")]), "g"]), ""]); return self;}, args: ["separators"], source: unescape('trimLeft%3A%20separators%0A%0A%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5E%5B%27%2C%20separators%2C%20%27%5D+%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'), messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")], referencedClasses: ["RegularExpression"] }), smalltalk.String); smalltalk.addMethod( unescape('_trimRight_'), smalltalk.method({ selector: unescape('trimRight%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [separators]), "__comma", [unescape("%5D+%24")]), "g"]), ""]); return self;}, args: ["separators"], source: unescape('trimRight%3A%20separators%0A%0A%09%5Eself%20replaceRegexp%3A%20%28RegularExpression%20fromString%3A%20%27%5B%27%2C%20separators%2C%20%27%5D+%24%27%20flag%3A%20%27g%27%29%20with%3A%20%27%27'), messageSends: ["replaceRegexp:with:", "fromString:flag:", unescape("%2C")], referencedClasses: ["RegularExpression"] }), smalltalk.String); smalltalk.addMethod( unescape('_trimLeft'), smalltalk.method({ selector: unescape('trimLeft'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimLeft_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimLeft%0A%09%5Eself%20trimLeft%3A%20%27%5Cs%27'), messageSends: ["trimLeft:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimRight'), smalltalk.method({ selector: unescape('trimRight'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimRight_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimRight%0A%09%5Eself%20trimRight%3A%20%27%5Cs%27'), messageSends: ["trimRight:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimBoth'), smalltalk.method({ selector: unescape('trimBoth'), category: 'regular expressions', fn: function () { var self=this; return smalltalk.send(self, "_trimBoth_", [unescape("%5Cs")]); return self;}, args: [], source: unescape('trimBoth%0A%09%5Eself%20trimBoth%3A%20%27%5Cs%27'), messageSends: ["trimBoth:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_trimBoth_'), smalltalk.method({ selector: unescape('trimBoth%3A'), category: 'regular expressions', fn: function (separators) { var self=this; return smalltalk.send(smalltalk.send(self, "_trimLeft_", [separators]), "_trimRight_", [separators]); return self;}, args: ["separators"], source: unescape('trimBoth%3A%20separators%0A%0A%09%5E%28self%20trimLeft%3A%20separators%29%20trimRight%3A%20separators'), messageSends: ["trimRight:", "trimLeft:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asLowercase'), smalltalk.method({ selector: unescape('asLowercase'), category: 'converting', fn: function () { var self=this; return self.toLowerCase(); return self;}, args: [], source: unescape('asLowercase%0A%09%3Creturn%20self.toLowerCase%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asUppercase'), smalltalk.method({ selector: unescape('asUppercase'), category: 'converting', fn: function () { var self=this; return self.toUpperCase(); return self;}, args: [], source: unescape('asUppercase%0A%09%3Creturn%20self.toUpperCase%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_join_'), smalltalk.method({ selector: unescape('join%3A'), category: 'split join', fn: function (aCollection) { var self=this; return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){return smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(each, "_asString", [])]);}), (function(){return smalltalk.send(stream, "_nextPutAll_", [self]);})]);})]); return self;}, args: ["aCollection"], source: unescape('join%3A%20aCollection%20%0A%09%5E%20String%0A%09%09streamContents%3A%20%5B%3Astream%20%7C%20aCollection%0A%09%09%09%09do%3A%20%5B%3Aeach%20%7C%20stream%20nextPutAll%3A%20each%20asString%5D%20%0A%09%09%09%09separatedBy%3A%20%5Bstream%20nextPutAll%3A%20self%5D%5D'), messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"], referencedClasses: ["String"] }), smalltalk.String); smalltalk.addMethod( unescape('_includesSubString_'), smalltalk.method({ selector: unescape('includesSubString%3A'), category: 'testing', fn: function (subString) { var self=this; return self.indexOf(subString) != -1 ; return self;}, args: ["subString"], source: unescape('includesSubString%3A%20subString%0A%09%3C%20return%20self.indexOf%28subString%29%20%21%3D%20-1%20%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asciiValue'), smalltalk.method({ selector: unescape('asciiValue'), category: 'accessing', fn: function () { var self=this; return self.charCodeAt(0);; return self;}, args: [], source: unescape('asciiValue%0A%09%3Creturn%20self.charCodeAt%280%29%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_lineIndicesDo_'), smalltalk.method({ selector: unescape('lineIndicesDo%3A'), category: 'split join', fn: function (aBlock) { var self=this; try{var cr=nil; var lf=nil; var start=nil; var sz=nil; var nextLF=nil; var nextCR=nil; (start=(1)); (sz=smalltalk.send(self, "_size", [])); (cr=smalltalk.send((smalltalk.String || String), "_cr", [])); (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, (1)])); (lf=smalltalk.send((smalltalk.String || String), "_lf", [])); (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, (1)])); (function(){while((function(){return ((($receiver = start).klass === smalltalk.Number) ? $receiver <=sz : smalltalk.send($receiver, "__lt_eq", [sz]));})()) {(function(){((($receiver = smalltalk.send(smalltalk.send(nextLF, "__eq", [(0)]), "_and_", [(function(){return smalltalk.send(nextCR, "__eq", [(0)]);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw({name: 'stReturn', selector: '_lineIndicesDo_', fn: function(){return self}})})();})]));return ((($receiver = smalltalk.send(smalltalk.send(nextCR, "__eq", [(0)]), "_or_", [(function(){return smalltalk.send((0) < nextLF, "_and_", [(function(){return ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver <nextCR : smalltalk.send($receiver, "__lt", [nextCR]));})]);})])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));})() : (function(){return ((($receiver = smalltalk.send((1) + nextCR, "__eq", [nextLF])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);(nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));})() : (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);(start=(1) + nextCR);return (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);(nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));}), (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);(start=(1) + nextCR);return (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));})]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextLF).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));}), (function(){return ((($receiver = smalltalk.send((1) + nextCR, "__eq", [nextLF])).klass === smalltalk.Boolean) ? ($receiver ? (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);(nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));})() : (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);(start=(1) + nextCR);return (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextLF]);(start=(1) + nextLF);(nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));return (nextLF=smalltalk.send(self, "_indexOf_startingAt_", [lf, start]));}), (function(){smalltalk.send(aBlock, "_value_value_value_", [start, ((($receiver = nextCR).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), nextCR]);(start=(1) + nextCR);return (nextCR=smalltalk.send(self, "_indexOf_startingAt_", [cr, start]));})]));})]));})()}})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '_lineIndicesDo_'){return e.fn()} throw(e)}}, args: ["aBlock"], source: unescape('lineIndicesDo%3A%20aBlock%0A%09%22execute%20aBlock%20with%203%20arguments%20for%20each%20line%3A%0A%09-%20start%20index%20of%20line%0A%09-%20end%20index%20of%20line%20without%20line%20delimiter%0A%09-%20end%20index%20of%20line%20including%20line%20delimiter%28s%29%20CR%2C%20LF%20or%20CRLF%22%0A%09%0A%09%7C%20cr%20lf%20start%20sz%20nextLF%20nextCR%20%7C%0A%09start%20%3A%3D%201.%0A%09sz%20%3A%3D%20self%20size.%0A%09cr%20%3A%3D%20String%20cr.%0A%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%201.%0A%09lf%20%3A%3D%20String%20lf.%0A%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%201.%0A%09%5B%20start%20%3C%3D%20sz%20%5D%20whileTrue%3A%20%5B%0A%09%09%28nextLF%20%3D%200%20and%3A%20%5B%20nextCR%20%3D%200%20%5D%29%0A%09%09%09ifTrue%3A%20%5B%20%22No%20more%20CR%2C%20nor%20LF%2C%20the%20string%20is%20over%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20sz%20value%3A%20sz.%0A%09%09%09%09%09%5Eself%20%5D.%0A%09%09%28nextCR%20%3D%200%20or%3A%20%5B%200%20%3C%20nextLF%20and%3A%20%5B%20nextLF%20%3C%20nextCR%20%5D%20%5D%29%0A%09%09%09ifTrue%3A%20%5B%20%22Found%20a%20LF%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextLF%20-%201%20value%3A%20nextLF.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextLF.%0A%09%09%09%09%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%20start%20%5D%0A%09%09%09ifFalse%3A%20%5B%201%20+%20nextCR%20%3D%20nextLF%0A%09%09%09%09ifTrue%3A%20%5B%20%22Found%20a%20CR-LF%20pair%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextCR%20-%201%20value%3A%20nextLF.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextLF.%0A%09%09%09%09%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%20start.%0A%09%09%09%09%09nextLF%20%3A%3D%20self%20indexOf%3A%20lf%20startingAt%3A%20start%20%5D%0A%09%09%09%09ifFalse%3A%20%5B%20%22Found%20a%20CR%22%0A%09%09%09%09%09aBlock%20value%3A%20start%20value%3A%20nextCR%20-%201%20value%3A%20nextCR.%0A%09%09%09%09%09start%20%3A%3D%201%20+%20nextCR.%0A%09%09%09%09%09nextCR%20%3A%3D%20self%20indexOf%3A%20cr%20startingAt%3A%20start%20%5D%5D%5D'), messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", unescape("%3C%3D"), "ifTrue:", "and:", unescape("%3D"), "value:value:value:", "ifTrue:ifFalse:", "or:", unescape("%3C"), unescape("-"), unescape("+")], referencedClasses: ["String"] }), smalltalk.String); smalltalk.addMethod( unescape('_linesDo_'), smalltalk.method({ selector: unescape('linesDo%3A'), category: 'split join', fn: function (aBlock) { var self=this; smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]);})]); return self;}, args: ["aBlock"], source: unescape('linesDo%3A%20aBlock%0A%09%22Execute%20aBlock%20with%20each%20line%20in%20this%20string.%20The%20terminating%20line%0A%09delimiters%20CR%2C%20LF%20or%20CRLF%20pairs%20are%20not%20included%20in%20what%20is%20passed%20to%20aBlock%22%0A%0A%09self%20lineIndicesDo%3A%20%5B%3Astart%20%3AendWithoutDelimiters%20%3Aend%20%7C%0A%09%09aBlock%20value%3A%20%28self%20copyFrom%3A%20start%20to%3A%20endWithoutDelimiters%29%5D'), messageSends: ["lineIndicesDo:", "value:", "copyFrom:to:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_lines'), smalltalk.method({ selector: unescape('lines'), category: 'split join', fn: function () { var self=this; var lines=nil; (lines=smalltalk.send((smalltalk.Array || Array), "_new", [])); smalltalk.send(self, "_linesDo_", [(function(aLine){return smalltalk.send(lines, "_add_", [aLine]);})]); return lines; return self;}, args: [], source: unescape('lines%0A%09%22Answer%20an%20array%20of%20lines%20composing%20this%20receiver%20without%20the%20line%20ending%20delimiters.%22%0A%0A%09%7C%20lines%20%7C%0A%09lines%20%3A%3D%20Array%20new.%0A%09self%20linesDo%3A%20%5B%3AaLine%20%7C%20lines%20add%3A%20aLine%5D.%0A%09%5Elines'), messageSends: ["new", "linesDo:", "add:"], referencedClasses: ["Array"] }), smalltalk.String); smalltalk.addMethod( unescape('_lineNumber_'), smalltalk.method({ selector: unescape('lineNumber%3A'), category: 'split join', fn: function (anIndex) { var self=this; try{var lineCount=nil; (lineCount=(0)); smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return ((($receiver = smalltalk.send((lineCount=((($receiver = lineCount).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))), "__eq", [anIndex])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])}})})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])}})})();})]));})]); (function(){throw({name: 'stReturn', selector: '_lineNumber_', fn: function(){return nil}})})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '_lineNumber_'){return e.fn()} throw(e)}}, args: ["anIndex"], source: unescape('lineNumber%3A%20anIndex%0A%09%22Answer%20a%20string%20containing%20the%20characters%20in%20the%20given%20line%20number.%22%0A%0A%09%7C%20lineCount%20%7C%0A%09lineCount%20%3A%3D%200.%0A%09self%20lineIndicesDo%3A%20%5B%3Astart%20%3AendWithoutDelimiters%20%3Aend%20%7C%0A%09%09%28lineCount%20%3A%3D%20lineCount%20+%201%29%20%3D%20anIndex%20ifTrue%3A%20%5B%5Eself%20copyFrom%3A%20start%20to%3A%20endWithoutDelimiters%5D%5D.%0A%09%5Enil'), messageSends: ["lineIndicesDo:", "ifTrue:", unescape("%3D"), unescape("+"), "copyFrom:to:"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_reversed'), smalltalk.method({ selector: unescape('reversed'), category: 'converting', fn: function () { var self=this; return self.split("").reverse().join(""); return self;}, args: [], source: unescape('reversed%0A%09%3Creturn%20self.split%28%22%22%29.reverse%28%29.join%28%22%22%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asJavaScriptSelector'), smalltalk.method({ selector: unescape('asJavaScriptSelector'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_asSelector", []), "_replace_with_", [unescape("%5E_"), ""]), "_replace_with_", [unescape("_.*"), ""]); return self;}, args: [], source: unescape('asJavaScriptSelector%0A%09%5E%28self%20asSelector%20replace%3A%20%27%5E_%27%20with%3A%20%27%27%29%20replace%3A%20%27_.*%27%20with%3A%20%27%27.'), messageSends: ["replace:with:", "asSelector"], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asJSONString'), smalltalk.method({ selector: unescape('asJSONString'), category: 'converting', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('asJSONString%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.String); smalltalk.addMethod( unescape('_asSymbol'), smalltalk.method({ selector: unescape('asSymbol'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.Symbol || Symbol), "_lookup_", [self]); return self;}, args: [], source: unescape('asSymbol%0A%09%5ESymbol%20lookup%3A%20self'), messageSends: ["lookup:"], referencedClasses: ["Symbol"] }), smalltalk.String); smalltalk.addMethod( unescape('_streamClass'), smalltalk.method({ selector: unescape('streamClass'), category: 'accessing', fn: function () { var self=this; return (smalltalk.StringStream || StringStream); return self;}, args: [], source: unescape('streamClass%0A%09%20%20%20%20%5EStringStream'), messageSends: [], referencedClasses: ["StringStream"] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; return new self.fn(aString); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09%20%20%20%20%3Creturn%20new%20self.fn%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_cr'), smalltalk.method({ selector: unescape('cr'), category: 'accessing', fn: function () { var self=this; return '\r'; return self;}, args: [], source: unescape('cr%0A%09%3Creturn%20%27%5Cr%27%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_lf'), smalltalk.method({ selector: unescape('lf'), category: 'accessing', fn: function () { var self=this; return '\n'; return self;}, args: [], source: unescape('lf%0A%09%3Creturn%20%27%5Cn%27%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_space'), smalltalk.method({ selector: unescape('space'), category: 'accessing', fn: function () { var self=this; return ' '; return self;}, args: [], source: unescape('space%0A%09%3Creturn%20%27%20%27%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_tab'), smalltalk.method({ selector: unescape('tab'), category: 'accessing', fn: function () { var self=this; return '\t'; return self;}, args: [], source: unescape('tab%0A%09%3Creturn%20%27%5Ct%27%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_crlf'), smalltalk.method({ selector: unescape('crlf'), category: 'accessing', fn: function () { var self=this; return '\r\n'; return self;}, args: [], source: unescape('crlf%0A%09%3Creturn%20%27%5Cr%5Cn%27%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_streamContents_'), smalltalk.method({ selector: unescape('streamContents%3A'), category: 'instance creation', fn: function (blockWithArg) { var self=this; var stream=nil; (stream=smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [smalltalk.send((smalltalk.String || String), "_new", [])])); smalltalk.send(blockWithArg, "_value_", [stream]); return smalltalk.send(stream, "_contents", []); return self;}, args: ["blockWithArg"], source: unescape('streamContents%3A%20blockWithArg%0A%09%7Cstream%7C%0A%09stream%20%3A%3D%20%28self%20streamClass%20on%3A%20String%20new%29.%0A%09blockWithArg%20value%3A%20stream.%0A%09%5E%20stream%20contents'), messageSends: ["on:", "streamClass", "new", "value:", "contents"], referencedClasses: ["String"] }), smalltalk.String.klass); smalltalk.addMethod( unescape('_value_'), smalltalk.method({ selector: unescape('value%3A'), category: 'instance creation', fn: function (aUTFCharCode) { var self=this; return String.fromCharCode(aUTFCharCode);; return self;}, args: ["aUTFCharCode"], source: unescape('value%3A%20aUTFCharCode%0A%0A%09%3Creturn%20String.fromCharCode%28aUTFCharCode%29%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.String.klass); smalltalk.addClass('Symbol', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_at_ifAbsent_", [anIndex, aBlock]); return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%5Eself%20asString%20at%3A%20anIndex%20ifAbsent%3A%20aBlock'), messageSends: ["at:ifAbsent:", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asString'), smalltalk.method({ selector: unescape('asString'), category: 'converting', fn: function () { var self=this; return self.value; return self;}, args: [], source: unescape('asString%0A%09%3Creturn%20self.value%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_printString'), smalltalk.method({ selector: unescape('printString'), category: 'printing', fn: function () { var self=this; return smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(self, "_asString", [])]); return self;}, args: [], source: unescape('printString%0A%09%5E%27%23%27%2C%20self%20asString'), messageSends: [unescape("%2C"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_size", []); return self;}, args: [], source: unescape('size%0A%09%5Eself%20asString%20size'), messageSends: ["size", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asSymbol'), smalltalk.method({ selector: unescape('asSymbol'), category: 'converting', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('asSymbol%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_copyFrom_to_'), smalltalk.method({ selector: unescape('copyFrom%3Ato%3A'), category: 'copying', fn: function (anIndex, anotherIndex) { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_copyFrom_to_", [anIndex, anotherIndex])]); return self;}, args: ["anIndex", "anotherIndex"], source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09%5Eself%20class%20fromString%3A%20%28self%20asString%20copyFrom%3A%20anIndex%20to%3A%20anotherIndex%29'), messageSends: ["fromString:", "class", "copyFrom:to:", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_deepCopy'), smalltalk.method({ selector: unescape('deepCopy'), category: 'copying', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('deepCopy%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__lt'), smalltalk.method({ selector: unescape('%3C'), category: 'comparing', fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver <smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__lt", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3C%20aSymbol%0A%09%5Eself%20asString%20%3C%20aSymbol%20asString'), messageSends: [unescape("%3C"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__lt_eq'), smalltalk.method({ selector: unescape('%3C%3D'), category: 'comparing', fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver <=smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__lt_eq", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3C%3D%20aSymbol%0A%09%5Eself%20asString%20%3C%3D%20aSymbol%20asString'), messageSends: [unescape("%3C%3D"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__gt_eq'), smalltalk.method({ selector: unescape('%3E%3D'), category: 'comparing', fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >=smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt_eq", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3E%3D%20aSymbol%0A%09%5Eself%20asString%20%3E%3D%20aSymbol%20asString'), messageSends: [unescape("%3E%3D"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aSymbol) { var self=this; try{((($receiver = smalltalk.send(smalltalk.send(aSymbol, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return smalltalk.send(smalltalk.send(self, "_asString", []), "__eq", [smalltalk.send(aSymbol, "_asString", [])])}})})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}}, args: ["aSymbol"], source: unescape('%3D%20aSymbol%0A%09aSymbol%20class%20%3D%20self%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%5Eself%20asString%20%3D%20aSymbol%20asString'), messageSends: ["ifFalse:", unescape("%3D"), "class", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_isSymbol'), smalltalk.method({ selector: unescape('isSymbol'), category: 'printing', fn: function () { var self=this; return true; return self;}, args: [], source: unescape('isSymbol%0A%09%5Etrue'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("smalltalk.symbolFor%28%22"), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [unescape("%22%29")]); return self;}, args: [], source: unescape('asJavascript%0A%09%5E%27smalltalk.symbolFor%28%22%27%2C%20self%20asString%2C%20%27%22%29%27'), messageSends: [unescape("%2C"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('__gt'), smalltalk.method({ selector: unescape('%3E'), category: 'comparing', fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt", [smalltalk.send(aSymbol, "_asString", [])])); return self;}, args: ["aSymbol"], source: unescape('%3E%20aSymbol%0A%09%5Eself%20asString%20%3E%20aSymbol%20asString'), messageSends: [unescape("%3E"), "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_shallowCopy'), smalltalk.method({ selector: unescape('shallowCopy'), category: 'copying', fn: function () { var self=this; return self; return self;}, args: [], source: unescape('shallowCopy%0A%09%5Eself'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_asSelector'), smalltalk.method({ selector: unescape('asSelector'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asSelector", []); return self;}, args: [], source: unescape('asSelector%0A%09%5Eself%20asString%20asSelector'), messageSends: ["asSelector", "asString"], referencedClasses: [] }), smalltalk.Symbol); smalltalk.addMethod( unescape('_lookup_'), smalltalk.method({ selector: unescape('lookup%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.symbolFor(aString);; return self;}, args: ["aString"], source: unescape('lookup%3A%20aString%0A%09%3Creturn%20smalltalk.symbolFor%28aString%29%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addMethod( unescape('_basicNew'), smalltalk.method({ selector: unescape('basicNew'), category: 'instance creation', fn: function () { var self=this; smalltalk.send(self, "_shouldNotImplement", []); return self;}, args: [], source: unescape('basicNew%0A%09self%20shouldNotImplement'), messageSends: ["shouldNotImplement"], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addMethod( unescape('_fromString_'), smalltalk.method({ selector: unescape('fromString%3A'), category: 'instance creation', fn: function (aString) { var self=this; return smalltalk.send(self, "_lookup_", [aString]); return self;}, args: ["aString"], source: unescape('fromString%3A%20aString%0A%09%5Eself%20lookup%3A%20aString'), messageSends: ["lookup:"], referencedClasses: [] }), smalltalk.Symbol.klass); smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return self.length; return self;}, args: [], source: unescape('size%0A%09%3Creturn%20self.length%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (anIndex, anObject) { var self=this; return self[anIndex - 1] = anObject; return self;}, args: ["anIndex", "anObject"], source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%20%3D%20anObject%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; var value = self[anIndex - 1]; if(value === undefined) { return aBlock(); } else { return value; } ; return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%20%20%20%20var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0A%09%20%20%20%20if%28value%20%3D%3D%3D%20undefined%29%20%7B%0A%09%09return%20aBlock%28%29%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20value%3B%0A%09%20%20%20%20%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; self.push(anObject); return anObject;; return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09%3Cself.push%28anObject%29%3B%20return%20anObject%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_join_'), smalltalk.method({ selector: unescape('join%3A'), category: 'enumerating', fn: function (aString) { var self=this; return self.join(aString); return self;}, args: ["aString"], source: unescape('join%3A%20aString%0A%09%3Creturn%20self.join%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [smalltalk.send(smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJavascript", []);})]), "_join_", [unescape("%2C%20")])]), "__comma", [unescape("%5D")]); return self;}, args: [], source: unescape('asJavascript%0A%09%5E%27%5B%27%2C%20%28%28self%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJavascript%5D%29%20join%3A%20%27%2C%20%27%29%2C%20%20%27%5D%27'), messageSends: [unescape("%2C"), "join:", "collect:", "asJavascript"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort'), smalltalk.method({ selector: unescape('sort'), category: 'enumerating', fn: function () { var self=this; return smalltalk.send(self, "_basicPerform_", ["sort"]); return self;}, args: [], source: unescape('sort%0A%20%20%20%20%5Eself%20basicPerform%3A%20%27sort%27'), messageSends: ["basicPerform:"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort_'), smalltalk.method({ selector: unescape('sort%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return self.sort(function(a, b) { if(aBlock(a,b)) {return -1} else {return 1} }) ; return self;}, args: ["aBlock"], source: unescape('sort%3A%20aBlock%0A%09%3C%0A%09%09return%20self.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09if%28aBlock%28a%2Cb%29%29%20%7Breturn%20-1%7D%20else%20%7Breturn%201%7D%0A%09%09%7D%29%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; for(var i=0;i<self.length;i++) { if(self[i] == anObject) { self.splice(i,1); break; } } ; return self;}, args: ["anObject"], source: unescape('remove%3A%20anObject%0A%09%3C%0A%09%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%20%7B%0A%09%09%09if%28self%5Bi%5D%20%3D%3D%20anObject%29%20%7B%0A%09%09%09%09self.splice%28i%2C1%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sorted'), smalltalk.method({ selector: unescape('sorted'), category: 'enumerating', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []); return self;}, args: [], source: unescape('sorted%0A%09%5Eself%20copy%20sort'), messageSends: ["sort", "copy"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sorted_'), smalltalk.method({ selector: unescape('sorted%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('sorted%3A%20aBlock%0A%09%5Eself%20copy%20sort%3A%20aBlock'), messageSends: ["sort:", "copy"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_removeFrom_to_'), smalltalk.method({ selector: unescape('removeFrom%3Ato%3A'), category: 'adding/removing', fn: function (aNumber, anotherNumber) { var self=this; self.splice(aNumber - 1,anotherNumber - 1); return self;}, args: ["aNumber", "anotherNumber"], source: unescape('removeFrom%3A%20aNumber%20to%3A%20anotherNumber%0A%09%3Cself.splice%28aNumber%20-%201%2CanotherNumber%20-%201%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_reversed'), smalltalk.method({ selector: unescape('reversed'), category: 'converting', fn: function () { var self=this; return self._copy().reverse(); return self;}, args: [], source: unescape('reversed%0A%09%3Creturn%20self._copy%28%29.reverse%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_new_'), smalltalk.method({ selector: unescape('new%3A'), category: 'instance creation', fn: function (anInteger) { var self=this; return new Array(anInteger); return self;}, args: ["anInteger"], source: unescape('new%3A%20anInteger%0A%09%3Creturn%20new%20Array%28anInteger%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_'), smalltalk.method({ selector: unescape('with%3A'), category: 'instance creation', fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(1)])); return self;}, args: ["anObject"], source: unescape('with%3A%20anObject%0A%09%20%20%20%20%5E%28self%20new%3A%201%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3A'), category: 'instance creation', fn: function (anObject, anObject2) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);smalltalk.send($rec, "_at_put_", [(2), anObject2]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(2)])); return self;}, args: ["anObject", "anObject2"], source: unescape('with%3A%20anObject%20with%3A%20anObject2%0A%09%20%20%20%20%5E%28self%20new%3A%202%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09at%3A%202%20put%3A%20anObject2%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3Awith%3A'), category: 'instance creation', fn: function (anObject, anObject2, anObject3) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);smalltalk.send($rec, "_at_put_", [(2), anObject2]);smalltalk.send($rec, "_at_put_", [(3), anObject3]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(3)])); return self;}, args: ["anObject", "anObject2", "anObject3"], source: unescape('with%3A%20anObject%20with%3A%20anObject2%20with%3A%20anObject3%0A%09%20%20%20%20%5E%28self%20new%3A%203%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09at%3A%202%20put%3A%20anObject2%3B%0A%09%09at%3A%203%20put%3A%20anObject3%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_withAll_'), smalltalk.method({ selector: unescape('withAll%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; var instance=nil; (instance=smalltalk.send(self, "_new_", [smalltalk.send(aCollection, "_size", [])])); smalltalk.send(aCollection, "_withIndexDo_", [(function(each, index){return smalltalk.send(instance, "_at_put_", [index, each]);})]); return instance; return self;}, args: ["aCollection"], source: unescape('withAll%3A%20aCollection%0A%09%7C%20instance%20%7C%0A%09instance%20%3A%3D%20self%20new%3A%20aCollection%20size.%0A%09aCollection%20withIndexDo%3A%20%5B%3Aeach%20%3Aindex%20%20%7C%0A%09%09instance%20at%3A%20index%20put%3A%20each%5D.%0A%09%5Einstance'), messageSends: ["new:", "size", "withIndexDo:", "at:put:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return self.length; return self;}, args: [], source: unescape('size%0A%09%3Creturn%20self.length%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (anIndex, anObject) { var self=this; return self[anIndex - 1] = anObject; return self;}, args: ["anIndex", "anObject"], source: unescape('at%3A%20anIndex%20put%3A%20anObject%0A%09%3Creturn%20self%5BanIndex%20-%201%5D%20%3D%20anObject%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (anIndex, aBlock) { var self=this; var value = self[anIndex - 1]; if(value === undefined) { return aBlock(); } else { return value; } ; return self;}, args: ["anIndex", "aBlock"], source: unescape('at%3A%20anIndex%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%20%20%20%20var%20value%20%3D%20self%5BanIndex%20-%201%5D%3B%0A%09%20%20%20%20if%28value%20%3D%3D%3D%20undefined%29%20%7B%0A%09%09return%20aBlock%28%29%3B%0A%09%20%20%20%20%7D%20else%20%7B%0A%09%09return%20value%3B%0A%09%20%20%20%20%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; self.push(anObject); return anObject;; return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09%3Cself.push%28anObject%29%3B%20return%20anObject%3B%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_join_'), smalltalk.method({ selector: unescape('join%3A'), category: 'enumerating', fn: function (aString) { var self=this; return self.join(aString); return self;}, args: ["aString"], source: unescape('join%3A%20aString%0A%09%3Creturn%20self.join%28aString%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_asJavascript'), smalltalk.method({ selector: unescape('asJavascript'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(unescape("%5B"), "__comma", [smalltalk.send(smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJavascript", []);})]), "_join_", [unescape("%2C%20")])]), "__comma", [unescape("%5D")]); return self;}, args: [], source: unescape('asJavascript%0A%09%5E%27%5B%27%2C%20%28%28self%20collect%3A%20%5B%3Aeach%20%7C%20each%20asJavascript%5D%29%20join%3A%20%27%2C%20%27%29%2C%20%20%27%5D%27'), messageSends: [unescape("%2C"), "join:", "collect:", "asJavascript"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort'), smalltalk.method({ selector: unescape('sort'), category: 'enumerating', fn: function () { var self=this; return smalltalk.send(self, "_basicPerform_", ["sort"]); return self;}, args: [], source: unescape('sort%0A%20%20%20%20%5Eself%20basicPerform%3A%20%27sort%27'), messageSends: ["basicPerform:"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sort_'), smalltalk.method({ selector: unescape('sort%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return self.sort(function(a, b) { if(aBlock(a,b)) {return -1} else {return 1} }) ; return self;}, args: ["aBlock"], source: unescape('sort%3A%20aBlock%0A%09%3C%0A%09%09return%20self.sort%28function%28a%2C%20b%29%20%7B%0A%09%09%09if%28aBlock%28a%2Cb%29%29%20%7Breturn%20-1%7D%20else%20%7Breturn%201%7D%0A%09%09%7D%29%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; for(var i=0;i<self.length;i++) { if(self[i] == anObject) { self.splice(i,1); break; } } ; return self;}, args: ["anObject"], source: unescape('remove%3A%20anObject%0A%09%3C%0A%09%09for%28var%20i%3D0%3Bi%3Cself.length%3Bi++%29%20%7B%0A%09%09%09if%28self%5Bi%5D%20%3D%3D%20anObject%29%20%7B%0A%09%09%09%09self.splice%28i%2C1%29%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sorted'), smalltalk.method({ selector: unescape('sorted'), category: 'enumerating', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []); return self;}, args: [], source: unescape('sorted%0A%09%5Eself%20copy%20sort'), messageSends: ["sort", "copy"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_sorted_'), smalltalk.method({ selector: unescape('sorted%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('sorted%3A%20aBlock%0A%09%5Eself%20copy%20sort%3A%20aBlock'), messageSends: ["sort:", "copy"], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_removeFrom_to_'), smalltalk.method({ selector: unescape('removeFrom%3Ato%3A'), category: 'adding/removing', fn: function (aNumber, anotherNumber) { var self=this; self.splice(aNumber - 1,anotherNumber - 1); return self;}, args: ["aNumber", "anotherNumber"], source: unescape('removeFrom%3A%20aNumber%20to%3A%20anotherNumber%0A%09%3Cself.splice%28aNumber%20-%201%2CanotherNumber%20-%201%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_reversed'), smalltalk.method({ selector: unescape('reversed'), category: 'converting', fn: function () { var self=this; return self._copy().reverse(); return self;}, args: [], source: unescape('reversed%0A%09%3Creturn%20self._copy%28%29.reverse%28%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array); smalltalk.addMethod( unescape('_new_'), smalltalk.method({ selector: unescape('new%3A'), category: 'instance creation', fn: function (anInteger) { var self=this; return new Array(anInteger); return self;}, args: ["anInteger"], source: unescape('new%3A%20anInteger%0A%09%3Creturn%20new%20Array%28anInteger%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_'), smalltalk.method({ selector: unescape('with%3A'), category: 'instance creation', fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(1)])); return self;}, args: ["anObject"], source: unescape('with%3A%20anObject%0A%09%20%20%20%20%5E%28self%20new%3A%201%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3A'), category: 'instance creation', fn: function (anObject, anObject2) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);smalltalk.send($rec, "_at_put_", [(2), anObject2]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(2)])); return self;}, args: ["anObject", "anObject2"], source: unescape('with%3A%20anObject%20with%3A%20anObject2%0A%09%20%20%20%20%5E%28self%20new%3A%202%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09at%3A%202%20put%3A%20anObject2%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_with_with_with_'), smalltalk.method({ selector: unescape('with%3Awith%3Awith%3A'), category: 'instance creation', fn: function (anObject, anObject2, anObject3) { var self=this; return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);smalltalk.send($rec, "_at_put_", [(2), anObject2]);smalltalk.send($rec, "_at_put_", [(3), anObject3]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(3)])); return self;}, args: ["anObject", "anObject2", "anObject3"], source: unescape('with%3A%20anObject%20with%3A%20anObject2%20with%3A%20anObject3%0A%09%20%20%20%20%5E%28self%20new%3A%203%29%0A%09%09at%3A%201%20put%3A%20anObject%3B%0A%09%09at%3A%202%20put%3A%20anObject2%3B%0A%09%09at%3A%203%20put%3A%20anObject3%3B%0A%09%09yourself'), messageSends: ["at:put:", "yourself", "new:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addMethod( unescape('_withAll_'), smalltalk.method({ selector: unescape('withAll%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; var instance=nil; (instance=smalltalk.send(self, "_new_", [smalltalk.send(aCollection, "_size", [])])); smalltalk.send(aCollection, "_withIndexDo_", [(function(each, index){return smalltalk.send(instance, "_at_put_", [index, each]);})]); return instance; return self;}, args: ["aCollection"], source: unescape('withAll%3A%20aCollection%0A%09%7C%20instance%20%7C%0A%09instance%20%3A%3D%20self%20new%3A%20aCollection%20size.%0A%09aCollection%20withIndexDo%3A%20%5B%3Aeach%20%3Aindex%20%20%7C%0A%09%09instance%20at%3A%20index%20put%3A%20each%5D.%0A%09%5Einstance'), messageSends: ["new:", "size", "withIndexDo:", "at:put:"], referencedClasses: [] }), smalltalk.Array.klass); smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel-Collections'); smalltalk.addMethod( unescape('_next_'), smalltalk.method({ selector: unescape('next%3A'), category: 'reading', fn: function (anInteger) { var self=this; var tempCollection=nil; (tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", [])); smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]));})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]));})]));})]); return tempCollection; return self;}, args: ["anInteger"], source: unescape('next%3A%20anInteger%0A%09%7C%20tempCollection%20%7C%0A%09tempCollection%20%3A%3D%20self%20collection%20class%20new.%0A%09anInteger%20timesRepeat%3A%20%5B%0A%09%20%20%20%20self%20atEnd%20ifFalse%3A%20%5B%0A%09%09tempCollection%20%3A%3D%20tempCollection%2C%20self%20next%5D%5D.%0A%09%5EtempCollection'), messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", unescape("%2C"), "next"], referencedClasses: [] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_nextPut_'), smalltalk.method({ selector: unescape('nextPut%3A'), category: 'writing', fn: function (aString) { var self=this; smalltalk.send(self, "_nextPutAll_", [aString]); return self;}, args: ["aString"], source: unescape('nextPut%3A%20aString%0A%09self%20nextPutAll%3A%20aString'), messageSends: ["nextPutAll:"], referencedClasses: [] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_nextPutAll_'), smalltalk.method({ selector: unescape('nextPutAll%3A'), category: 'writing', fn: function (aString) { var self=this; smalltalk.send(self, "_setCollection_", [smalltalk.send(smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_position", [])]), "__comma", [aString]), "__comma", [smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [((($receiver = ((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))).klass === smalltalk.Number) ? $receiver +smalltalk.send(aString, "_size", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(aString, "_size", [])])), smalltalk.send(smalltalk.send(self, "_collection", []), "_size", [])])])]); smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +smalltalk.send(aString, "_size", []) : smalltalk.send($receiver, "__plus", [smalltalk.send(aString, "_size", [])]))]); smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]); return self;}, args: ["aString"], source: unescape('nextPutAll%3A%20aString%0A%09self%20setCollection%3A%20%0A%09%20%20%20%20%28self%20collection%20copyFrom%3A%201%20to%3A%20self%20position%29%2C%0A%09%20%20%20%20aString%2C%0A%09%20%20%20%20%28self%20collection%20copyFrom%3A%20%28self%20position%20+%201%20+%20aString%20size%29%20to%3A%20self%20collection%20size%29.%0A%09self%20position%3A%20self%20position%20+%20aString%20size.%0A%09self%20setStreamSize%3A%20%28self%20streamSize%20max%3A%20self%20position%29'), messageSends: ["setCollection:", unescape("%2C"), "copyFrom:to:", "collection", "position", unescape("+"), "size", "position:", "setStreamSize:", "max:", "streamSize"], referencedClasses: [] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_cr'), smalltalk.method({ selector: unescape('cr'), category: 'writing', fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_cr", [])]); return self;}, args: [], source: unescape('cr%0A%09%5Eself%20nextPutAll%3A%20String%20cr'), messageSends: ["nextPutAll:", "cr"], referencedClasses: ["String"] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_crlf'), smalltalk.method({ selector: unescape('crlf'), category: 'writing', fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_crlf", [])]); return self;}, args: [], source: unescape('crlf%0A%09%5Eself%20nextPutAll%3A%20String%20crlf'), messageSends: ["nextPutAll:", "crlf"], referencedClasses: ["String"] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_lf'), smalltalk.method({ selector: unescape('lf'), category: 'writing', fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_lf", [])]); return self;}, args: [], source: unescape('lf%0A%09%5Eself%20nextPutAll%3A%20String%20lf'), messageSends: ["nextPutAll:", "lf"], referencedClasses: ["String"] }), smalltalk.StringStream); smalltalk.addMethod( unescape('_space'), smalltalk.method({ selector: unescape('space'), category: 'writing', fn: function () { var self=this; smalltalk.send(self, "_nextPut_", [" "]); return self;}, args: [], source: unescape('space%0A%09self%20nextPut%3A%20%27%20%27'), messageSends: ["nextPut:"], referencedClasses: [] }), smalltalk.StringStream); smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel-Collections'); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; var found; for(var i=0; i < self['@elements'].length; i++) { if(anObject == self['@elements'][i]) { found = true; break; } } if(!found) {self['@elements'].push(anObject)} ; return self;}, args: ["anObject"], source: unescape('add%3A%20anObject%0A%09%3C%0A%09%09var%20found%3B%0A%09%09for%28var%20i%3D0%3B%20i%20%3C%20self%5B%27@elements%27%5D.length%3B%20i++%29%20%7B%0A%09%09%09if%28anObject%20%3D%3D%20self%5B%27@elements%27%5D%5Bi%5D%29%20%7B%0A%09%09%09%09found%20%3D%20true%3B%0A%09%09%09%09break%3B%0A%09%09%09%7D%0A%09%09%7D%0A%09%09if%28%21found%29%20%7Bself%5B%27@elements%27%5D.push%28anObject%29%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_remove_'), smalltalk.method({ selector: unescape('remove%3A'), category: 'adding/removing', fn: function (anObject) { var self=this; smalltalk.send(self['@elements'], "_remove_", [anObject]); return self;}, args: ["anObject"], source: unescape('remove%3A%20anObject%0A%09elements%20remove%3A%20anObject'), messageSends: ["remove:"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_initialize'), smalltalk.method({ selector: unescape('initialize'), category: 'initialization', fn: function () { var self=this; smalltalk.send(self, "_initialize", [], smalltalk.Collection); (self['@elements']=[]); return self;}, args: [], source: unescape('initialize%0A%09super%20initialize.%0A%09elements%20%3A%3D%20%23%28%29'), messageSends: ["initialize"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self['@elements'], "_size", []); return self;}, args: [], source: unescape('size%0A%09%5Eelements%20size'), messageSends: ["size"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_asArray'), smalltalk.method({ selector: unescape('asArray'), category: 'converting', fn: function () { var self=this; return smalltalk.send(self['@elements'], "_copy", []); return self;}, args: [], source: unescape('asArray%0A%09%5Eelements%20copy'), messageSends: ["copy"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_detect_ifNone_'), smalltalk.method({ selector: unescape('detect%3AifNone%3A'), category: 'enumerating', fn: function (aBlock, anotherBlock) { var self=this; return smalltalk.send(self['@elements'], "_detect_ifNone_", [aBlock, anotherBlock]); return self;}, args: ["aBlock", "anotherBlock"], source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%5Eelements%20detect%3A%20aBlock%20ifNone%3A%20anotherBlock'), messageSends: ["detect:ifNone:"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; smalltalk.send(self['@elements'], "_do_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('do%3A%20aBlock%0A%09elements%20do%3A%20aBlock'), messageSends: ["do:"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_includes_'), smalltalk.method({ selector: unescape('includes%3A'), category: 'testing', fn: function (anObject) { var self=this; return smalltalk.send(self['@elements'], "_includes_", [anObject]); return self;}, args: ["anObject"], source: unescape('includes%3A%20anObject%0A%09%5Eelements%20includes%3A%20anObject'), messageSends: ["includes:"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aCollection) { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aCollection, "_class", [])]), "_and_", [(function(){return smalltalk.send(self['@elements'], "__eq", [smalltalk.send(aCollection, "_asArray", [])]);})]); return self;}, args: ["aCollection"], source: unescape('%3D%20aCollection%0A%09%5Eself%20class%20%3D%20aCollection%20class%20and%3A%20%5B%0A%09%09elements%20%3D%20aCollection%20asArray%5D'), messageSends: ["and:", unescape("%3D"), "class", "asArray"], referencedClasses: [] }), smalltalk.Set); smalltalk.addMethod( unescape('_select_'), smalltalk.method({ selector: unescape('select%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; var collection=nil; (collection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_do_", [(function(each){return ((($receiver = smalltalk.send(aBlock, "_value_", [each])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(collection, "_add_", [each]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(collection, "_add_", [each]);})]));})]); return collection; return self;}, args: ["aBlock"], source: unescape('select%3A%20aBlock%0A%09%7C%20collection%20%7C%0A%09collection%20%3A%3D%20self%20class%20new.%20%0A%09self%20do%3A%20%5B%3Aeach%20%7C%0A%09%09%28aBlock%20value%3A%20each%29%20ifTrue%3A%20%5B%0A%09%09%09collection%20add%3A%20each%5D%5D.%0A%09%5Ecollection'), messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"], referencedClasses: [] }), smalltalk.Set); smalltalk.addClass('HashedCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.HashedCollection.comment=unescape('A%20HashedCollection%20is%20a%20traditional%20JavaScript%20object%2C%20or%20a%20Smalltalk%20Dictionary.%0A%0AUnlike%20a%20Dictionary%2C%20it%20can%20only%20have%20strings%20as%20keys.') smalltalk.addMethod( unescape('_size'), smalltalk.method({ selector: unescape('size'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_keys", []), "_size", []); return self;}, args: [], source: unescape('size%0A%09%5Eself%20keys%20size'), messageSends: ["size", "keys"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_associations'), smalltalk.method({ selector: unescape('associations'), category: 'accessing', fn: function () { var self=this; var associations=nil; (associations=[]); smalltalk.send(smalltalk.send(self, "_keys", []), "_do_", [(function(each){return smalltalk.send(associations, "_add_", [smalltalk.send((smalltalk.Association || Association), "_key_value_", [each, smalltalk.send(self, "_at_", [each])])]);})]); return associations; return self;}, args: [], source: unescape('associations%0A%09%7C%20associations%20%7C%0A%09associations%20%3A%3D%20%23%28%29.%0A%09self%20keys%20do%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20associations%20add%3A%20%28Association%20key%3A%20each%20value%3A%20%28self%20at%3A%20each%29%29%5D.%0A%09%5Eassociations'), messageSends: ["do:", "keys", "add:", "key:value:", "at:"], referencedClasses: ["Association"] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_keys'), smalltalk.method({ selector: unescape('keys'), category: 'accessing', fn: function () { var self=this; var keys = []; for(var i in self) { if(self.hasOwnProperty(i)) { keys.push(i); } }; return keys; ; return self;}, args: [], source: unescape('keys%0A%09%3C%0A%09%09var%20keys%20%3D%20%5B%5D%3B%0A%09%09for%28var%20i%20in%20self%29%20%7B%0A%09%09%09if%28self.hasOwnProperty%28i%29%29%20%7B%0A%09%09%09%09keys.push%28i%29%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09return%20keys%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_values'), smalltalk.method({ selector: unescape('values'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_keys", []), "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]); return self;}, args: [], source: unescape('values%0A%09%5Eself%20keys%20collect%3A%20%5B%3Aeach%20%7C%20self%20at%3A%20each%5D'), messageSends: ["collect:", "keys", "at:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (aKey, aValue) { var self=this; return smalltalk.send(self, "_basicAt_put_", [aKey, aValue]); return self;}, args: ["aKey", "aValue"], source: unescape('at%3A%20aKey%20put%3A%20aValue%0A%09%5Eself%20basicAt%3A%20aKey%20put%3A%20aValue'), messageSends: ["basicAt:put:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (aKey, aBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_includesKey_", [aKey]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_basicAt_", [aKey]);}), aBlock]); return self;}, args: ["aKey", "aBlock"], source: unescape('at%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%5E%28self%20includesKey%3A%20aKey%29%0A%09%09ifTrue%3A%20%5Bself%20basicAt%3A%20aKey%5D%0A%09%09ifFalse%3A%20aBlock'), messageSends: ["ifTrue:ifFalse:", "includesKey:", "basicAt:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_ifAbsentPut_'), smalltalk.method({ selector: unescape('at%3AifAbsentPut%3A'), category: 'accessing', fn: function (aKey, aBlock) { var self=this; return smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_at_put_", [aKey, smalltalk.send(aBlock, "_value", [])]);})]); return self;}, args: ["aKey", "aBlock"], source: unescape('at%3A%20aKey%20ifAbsentPut%3A%20aBlock%0A%09%5Eself%20at%3A%20aKey%20ifAbsent%3A%20%5B%0A%09%20%20%20%20self%20at%3A%20aKey%20put%3A%20aBlock%20value%5D'), messageSends: ["at:ifAbsent:", "at:put:", "value"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_ifPresent_'), smalltalk.method({ selector: unescape('at%3AifPresent%3A'), category: 'accessing', fn: function (aKey, aBlock) { var self=this; return (($receiver = smalltalk.send(self, "_basicAt_", [aKey])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})() : nil; return self;}, args: ["aKey", "aBlock"], source: unescape('at%3A%20aKey%20ifPresent%3A%20aBlock%0A%09%5E%28self%20basicAt%3A%20aKey%29%20ifNotNil%3A%20%5BaBlock%20value%3A%20%28self%20at%3A%20aKey%29%5D'), messageSends: ["ifNotNil:", "basicAt:", "value:", "at:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_ifPresent_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifPresent%3AifAbsent%3A'), category: 'accessing', fn: function (aKey, aBlock, anotherBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_basicAt_", [aKey]), "_ifNil_ifNotNil_", [anotherBlock, (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})]); return self;}, args: ["aKey", "aBlock", "anotherBlock"], source: unescape('at%3A%20aKey%20ifPresent%3A%20aBlock%20ifAbsent%3A%20anotherBlock%0A%09%5E%28self%20basicAt%3A%20aKey%29%0A%09%20%20%20%20ifNil%3A%20anotherBlock%0A%09%20%20%20%20ifNotNil%3A%20%5BaBlock%20value%3A%20%28self%20at%3A%20aKey%29%5D'), messageSends: ["ifNil:ifNotNil:", "basicAt:", "value:", "at:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_at_'), smalltalk.method({ selector: unescape('at%3A'), category: 'accessing', fn: function (aKey) { var self=this; return smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;}, args: ["aKey"], source: unescape('at%3A%20aKey%0A%09%5Eself%20at%3A%20aKey%20ifAbsent%3A%20%5Bself%20errorNotFound%5D'), messageSends: ["at:ifAbsent:", "errorNotFound"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_add_'), smalltalk.method({ selector: unescape('add%3A'), category: 'adding/removing', fn: function (anAssociation) { var self=this; smalltalk.send(self, "_at_put_", [smalltalk.send(anAssociation, "_key", []), smalltalk.send(anAssociation, "_value", [])]); return self;}, args: ["anAssociation"], source: unescape('add%3A%20anAssociation%0A%09self%20at%3A%20anAssociation%20key%20put%3A%20anAssociation%20value'), messageSends: ["at:put:", "key", "value"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_addAll_'), smalltalk.method({ selector: unescape('addAll%3A'), category: 'adding/removing', fn: function (aHashedCollection) { var self=this; smalltalk.send(self, "_addAll_", [smalltalk.send(aHashedCollection, "_associations", [])], smalltalk.Collection); return aHashedCollection; return self;}, args: ["aHashedCollection"], source: unescape('addAll%3A%20aHashedCollection%0A%09super%20addAll%3A%20aHashedCollection%20associations.%0A%09%5EaHashedCollection'), messageSends: ["addAll:", "associations"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_removeKey_'), smalltalk.method({ selector: unescape('removeKey%3A'), category: 'adding/removing', fn: function (aKey) { var self=this; smalltalk.send(self, "_remove_", [aKey]); return self;}, args: ["aKey"], source: unescape('removeKey%3A%20aKey%0A%20%20%20%20self%20remove%3A%20aKey'), messageSends: ["remove:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_remove_ifAbsent_'), smalltalk.method({ selector: unescape('remove%3AifAbsent%3A'), category: 'adding/removing', fn: function (aKey, aBlock) { var self=this; return smalltalk.send(self, "_removeKey_ifAbsent_", [aKey, aBlock]); return self;}, args: ["aKey", "aBlock"], source: unescape('remove%3A%20aKey%20ifAbsent%3A%20aBlock%0A%20%20%20%20%5Eself%20removeKey%3A%20aKey%20ifAbsent%3A%20aBlock'), messageSends: ["removeKey:ifAbsent:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_removeKey_ifAbsent_'), smalltalk.method({ selector: unescape('removeKey%3AifAbsent%3A'), category: 'adding/removing', fn: function (aKey, aBlock) { var self=this; return ((($receiver = smalltalk.send(self, "_includesKey_", [aKey])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(aBlock, "_value", []);})() : (function(){return smalltalk.send(self, "_basicDelete_", [aKey]);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){return smalltalk.send(aBlock, "_value", []);}), (function(){return smalltalk.send(self, "_basicDelete_", [aKey]);})])); return self;}, args: ["aKey", "aBlock"], source: unescape('removeKey%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%5E%28self%20includesKey%3A%20aKey%29%20%0A%09%09ifFalse%3A%20%5BaBlock%20value%5D%0A%09%09ifTrue%3A%20%5Bself%20basicDelete%3A%20aKey%5D'), messageSends: ["ifFalse:ifTrue:", "includesKey:", "value", "basicDelete:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('__eq'), smalltalk.method({ selector: unescape('%3D'), category: 'comparing', fn: function (aHashedCollection) { var self=this; try{((($receiver = smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aHashedCollection, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); ((($receiver = smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [smalltalk.send(aHashedCollection, "_size", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return false}})})();})])); (function(){throw({name: 'stReturn', selector: '__eq', fn: function(){return smalltalk.send(smalltalk.send(self, "_associations", []), "__eq", [smalltalk.send(aHashedCollection, "_associations", [])])}})})(); return self; } catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}}, args: ["aHashedCollection"], source: unescape('%3D%20aHashedCollection%0A%09self%20class%20%3D%20aHashedCollection%20class%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09self%20size%20%3D%20aHashedCollection%20size%20ifFalse%3A%20%5B%5Efalse%5D.%0A%09%5Eself%20associations%20%3D%20aHashedCollection%20associations'), messageSends: ["ifFalse:", unescape("%3D"), "class", "size", "associations"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_shallowCopy'), smalltalk.method({ selector: unescape('shallowCopy'), category: 'copying', fn: function () { var self=this; var copy=nil; (copy=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(copy, "_at_put_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]); return copy; return self;}, args: [], source: unescape('shallowCopy%0A%09%7C%20copy%20%7C%0A%09copy%20%3A%3D%20self%20class%20new.%0A%09self%20associationsDo%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20copy%20at%3A%20each%20key%20%20put%3A%20each%20value%5D.%0A%09%5Ecopy'), messageSends: ["new", "class", "associationsDo:", "at:put:", "key", "value"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('__comma'), smalltalk.method({ selector: unescape('%2C'), category: 'copying', fn: function (aCollection) { var self=this; smalltalk.send(self, "_shouldNotImplement", []); return self;}, args: ["aCollection"], source: unescape('%2C%20aCollection%0A%09self%20shouldNotImplement'), messageSends: ["shouldNotImplement"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_copyFrom_to_'), smalltalk.method({ selector: unescape('copyFrom%3Ato%3A'), category: 'copying', fn: function (anIndex, anotherIndex) { var self=this; smalltalk.send(self, "_shouldNotImplement", []); return self;}, args: ["anIndex", "anotherIndex"], source: unescape('copyFrom%3A%20anIndex%20to%3A%20anotherIndex%0A%09self%20shouldNotImplement'), messageSends: ["shouldNotImplement"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_deepCopy'), smalltalk.method({ selector: unescape('deepCopy'), category: 'copying', fn: function () { var self=this; var copy=nil; (copy=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(copy, "_at_put_", [smalltalk.send(each, "_key", []), smalltalk.send(smalltalk.send(each, "_value", []), "_deepCopy", [])]);})]); return copy; return self;}, args: [], source: unescape('deepCopy%0A%09%7C%20copy%20%7C%0A%09copy%20%3A%3D%20self%20class%20new.%0A%09self%20associationsDo%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20copy%20at%3A%20each%20key%20%20put%3A%20each%20value%20deepCopy%5D.%0A%09%5Ecopy'), messageSends: ["new", "class", "associationsDo:", "at:put:", "key", "deepCopy", "value"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_associationsDo_'), smalltalk.method({ selector: unescape('associationsDo%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; smalltalk.send(smalltalk.send(self, "_associations", []), "_do_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('associationsDo%3A%20aBlock%0A%09self%20associations%20do%3A%20aBlock'), messageSends: ["do:", "associations"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_keysAndValuesDo_'), smalltalk.method({ selector: unescape('keysAndValuesDo%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(aBlock, "_value_value_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]); return self;}, args: ["aBlock"], source: unescape('keysAndValuesDo%3A%20aBlock%0A%09self%20associationsDo%3A%20%5B%3Aeach%20%7C%0A%09%20%20%20%20aBlock%20value%3A%20each%20key%20value%3A%20each%20value%5D'), messageSends: ["associationsDo:", "value:value:", "key", "value"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_do_'), smalltalk.method({ selector: unescape('do%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; smalltalk.send(smalltalk.send(self, "_values", []), "_do_", [aBlock]); return self;}, args: ["aBlock"], source: unescape('do%3A%20aBlock%0A%09self%20values%20do%3A%20aBlock'), messageSends: ["do:", "values"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_select_'), smalltalk.method({ selector: unescape('select%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; var newDict=nil; (newDict=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return ((($receiver = smalltalk.send(aBlock, "_value_", [value])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})]));})]); return newDict; return self;}, args: ["aBlock"], source: unescape('select%3A%20aBlock%0A%09%7C%20newDict%20%7C%0A%09newDict%20%3A%3D%20self%20class%20new.%0A%09self%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%09%20%20%20%20%28aBlock%20value%3A%20value%29%20ifTrue%3A%20%5BnewDict%20at%3A%20key%20put%3A%20value%5D%5D.%0A%09%5EnewDict'), messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_collect_'), smalltalk.method({ selector: unescape('collect%3A'), category: 'enumerating', fn: function (aBlock) { var self=this; var newDict=nil; (newDict=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return smalltalk.send(newDict, "_at_put_", [key, smalltalk.send(aBlock, "_value_", [value])]);})]); return newDict; return self;}, args: ["aBlock"], source: unescape('collect%3A%20aBlock%0A%09%7C%20newDict%20%7C%0A%09newDict%20%3A%3D%20self%20class%20new.%0A%09self%20keysAndValuesDo%3A%20%5B%3Akey%20%3Avalue%20%7C%0A%09%20%20%20%20newDict%20at%3A%20key%20put%3A%20%28aBlock%20value%3A%20value%29%5D.%0A%09%5EnewDict'), messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_detect_ifNone_'), smalltalk.method({ selector: unescape('detect%3AifNone%3A'), category: 'enumerating', fn: function (aBlock, anotherBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_values", []), "_detect_ifNone_", [aBlock, anotherBlock]); return self;}, args: ["aBlock", "anotherBlock"], source: unescape('detect%3A%20aBlock%20ifNone%3A%20anotherBlock%0A%09%5Eself%20values%20detect%3A%20aBlock%20ifNone%3A%20anotherBlock'), messageSends: ["detect:ifNone:", "values"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_includes_'), smalltalk.method({ selector: unescape('includes%3A'), category: 'enumerating', fn: function (anObject) { var self=this; return smalltalk.send(smalltalk.send(self, "_values", []), "_includes_", [anObject]); return self;}, args: ["anObject"], source: unescape('includes%3A%20anObject%0A%09%5Eself%20values%20includes%3A%20anObject'), messageSends: ["includes:", "values"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_printString'), smalltalk.method({ selector: unescape('printString'), category: 'printing', fn: function () { var self=this; return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(aStream){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.Collection)]);return smalltalk.send($rec, "_nextPutAll_", [unescape("%28")]);})(aStream);smalltalk.send(smalltalk.send(self, "_associations", []), "_do_separatedBy_", [(function(anAssociation){return (function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(anAssociation, "_key", []), "_printString", [])]);smalltalk.send($rec, "_nextPutAll_", [unescape("%20-%3E%20")]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(anAssociation, "_value", []), "_printString", [])]);})(aStream);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [unescape("%20%2C%20")]);})]);return smalltalk.send(aStream, "_nextPutAll_", [unescape("%29")]);})]); return self;}, args: [], source: unescape('printString%0A%09%5EString%20streamContents%3A%20%5B%3AaStream%7C%20%20%0A%09%09aStream%20%0A%09%09%09nextPutAll%3A%20super%20printString%3B%0A%09%09%09nextPutAll%3A%20%27%28%27.%0A%09%09%09%09self%20associations%20%0A%09%09%09%09%09do%3A%20%5B%3AanAssociation%7C%20%20%0A%09%09%09%09%09%09aStream%20%0A%09%09%09%09%09%09%09nextPutAll%3A%20anAssociation%20key%20printString%3B%0A%09%09%09%09%09%09%09%09nextPutAll%3A%20%27%20-%3E%20%27%3B%0A%09%09%09%09%09%09%09%09nextPutAll%3A%20anAssociation%20value%20printString%5D%0A%09%09%09%09%09%09%09separatedBy%3A%20%5BaStream%20nextPutAll%3A%20%27%20%2C%20%27%5D.%0A%09%09%09%09%09%09aStream%20nextPutAll%3A%20%27%29%27%5D'), messageSends: ["streamContents:", "nextPutAll:", "printString", "do:separatedBy:", "associations", "key", "value"], referencedClasses: ["String"] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_storeOn_'), smalltalk.method({ selector: unescape('storeOn%3A'), category: 'printing', fn: function (aStream) { var self=this; smalltalk.send(aStream, "_nextPutAll_", [unescape("%23%7B")]); smalltalk.send(smalltalk.send(self, "_associations", []), "_do_separatedBy_", [(function(each){return smalltalk.send(each, "_storeOn_", [aStream]);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [". "]);})]); smalltalk.send(aStream, "_nextPutAll_", [unescape("%7D")]); return self;}, args: ["aStream"], source: unescape('storeOn%3A%20aStream%0A%09aStream%20nextPutAll%3A%20%27%23%7B%27.%0A%09self%20associations%0A%09%09do%3A%20%5B%3Aeach%20%7C%20each%20storeOn%3A%20aStream%5D%0A%09%09separatedBy%3A%20%5B%20aStream%20nextPutAll%3A%20%27.%20%27%5D.%0A%09aStream%20nextPutAll%3A%20%27%7D%27'), messageSends: ["nextPutAll:", "do:separatedBy:", "associations", "storeOn:"], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_includesKey_'), smalltalk.method({ selector: unescape('includesKey%3A'), category: 'testing', fn: function (aKey) { var self=this; return self.hasOwnProperty(aKey); return self;}, args: ["aKey"], source: unescape('includesKey%3A%20aKey%0A%09%3Creturn%20self.hasOwnProperty%28aKey%29%3E'), messageSends: [], referencedClasses: [] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_asDictionary'), smalltalk.method({ selector: unescape('asDictionary'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.Dictionary || Dictionary), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); return self;}, args: [], source: unescape('asDictionary%0A%09%5EDictionary%20fromPairs%3A%20self%20associations'), messageSends: ["fromPairs:", "associations"], referencedClasses: ["Dictionary"] }), smalltalk.HashedCollection); smalltalk.addMethod( unescape('_fromPairs_'), smalltalk.method({ selector: unescape('fromPairs%3A'), category: 'instance creation', fn: function (aCollection) { var self=this; var dict=nil; (dict=smalltalk.send(self, "_new", [])); smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(dict, "_add_", [each]);})]); return dict; return self;}, args: ["aCollection"], source: unescape('fromPairs%3A%20aCollection%0A%09%7C%20dict%20%7C%0A%09dict%20%3A%3D%20self%20new.%0A%09aCollection%20do%3A%20%5B%3Aeach%20%7C%20dict%20add%3A%20each%5D.%0A%09%5Edict'), messageSends: ["new", "do:", "add:"], referencedClasses: [] }), smalltalk.HashedCollection.klass); smalltalk.addClass('Dictionary', smalltalk.HashedCollection, ['keys', 'values'], 'Kernel-Collections'); smalltalk.addMethod( unescape('_at_ifAbsent_'), smalltalk.method({ selector: unescape('at%3AifAbsent%3A'), category: 'accessing', fn: function (aKey, aBlock) { var self=this; var index; for(var i=0;i<self['@keys'].length;i++){ if(self['@keys'][i].__eq(aKey)) {index = i;} }; if(typeof index === 'undefined') { return aBlock(); } else { return self['@values'][index]; } ; return self;}, args: ["aKey", "aBlock"], source: unescape('at%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09var%20index%3B%0A%09%09for%28var%20i%3D0%3Bi%3Cself%5B%27@keys%27%5D.length%3Bi++%29%7B%0A%09%09%09if%28self%5B%27@keys%27%5D%5Bi%5D.__eq%28aKey%29%29%20%7Bindex%20%3D%20i%3B%7D%0A%09%09%7D%3B%0A%09%09if%28typeof%20index%20%3D%3D%3D%20%27undefined%27%29%20%7B%0A%09%09%09return%20aBlock%28%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09return%20self%5B%27@values%27%5D%5Bindex%5D%3B%0A%09%09%7D%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_keys'), smalltalk.method({ selector: unescape('keys'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self['@keys'], "_copy", []); return self;}, args: [], source: unescape('keys%0A%09%5Ekeys%20copy'), messageSends: ["copy"], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_values'), smalltalk.method({ selector: unescape('values'), category: 'accessing', fn: function () { var self=this; return smalltalk.send(self['@values'], "_copy", []); return self;}, args: [], source: unescape('values%0A%09%5Evalues%20copy'), messageSends: ["copy"], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_at_put_'), smalltalk.method({ selector: unescape('at%3Aput%3A'), category: 'accessing', fn: function (aKey, aValue) { var self=this; var index = self['@keys'].indexOf(aKey); if(index === -1) { self['@values'].push(aValue); self['@keys'].push(aKey); } else { self['@values'][index] = aValue; }; return aValue; ; return self;}, args: ["aKey", "aValue"], source: unescape('at%3A%20aKey%20put%3A%20aValue%0A%09%3C%0A%09%09var%20index%20%3D%20self%5B%27@keys%27%5D.indexOf%28aKey%29%3B%0A%09%09if%28index%20%3D%3D%3D%20-1%29%20%7B%0A%09%09%09self%5B%27@values%27%5D.push%28aValue%29%3B%0A%09%09%09self%5B%27@keys%27%5D.push%28aKey%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09self%5B%27@values%27%5D%5Bindex%5D%20%3D%20aValue%3B%0A%09%09%7D%3B%0A%0A%09%09return%20aValue%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_removeKey_ifAbsent_'), smalltalk.method({ selector: unescape('removeKey%3AifAbsent%3A'), category: 'adding/removing', fn: function (aKey, aBlock) { var self=this; var index = self['@keys'].indexOf(aKey); if(index === -1) { return aBlock() } else { self['@keys'].splice(i, 1); self['@values'].splice(i, 1); return aKey }; ; return self;}, args: ["aKey", "aBlock"], source: unescape('removeKey%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%3C%0A%09%09var%20index%20%3D%20self%5B%27@keys%27%5D.indexOf%28aKey%29%3B%0A%09%09if%28index%20%3D%3D%3D%20-1%29%20%7B%0A%09%09%09return%20aBlock%28%29%0A%09%09%7D%20else%20%7B%0A%09%09%09self%5B%27@keys%27%5D.splice%28i%2C%201%29%3B%0A%09%09%09self%5B%27@values%27%5D.splice%28i%2C%201%29%3B%0A%09%09%09return%20aKey%0A%09%09%7D%3B%0A%09%3E'), messageSends: [], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_initialize'), smalltalk.method({ selector: unescape('initialize'), category: 'initialization', fn: function () { var self=this; smalltalk.send(self, "_initialize", [], smalltalk.HashedCollection); (self['@keys']=[]); (self['@values']=[]); return self;}, args: [], source: unescape('initialize%0A%09super%20initialize.%0A%09keys%20%3A%3D%20%23%28%29.%0A%09values%20%3A%3D%20%23%28%29'), messageSends: ["initialize"], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_includesKey_'), smalltalk.method({ selector: unescape('includesKey%3A'), category: 'testing', fn: function (aKey) { var self=this; return smalltalk.send(self['@keys'], "_includes_", [aKey]); return self;}, args: ["aKey"], source: unescape('includesKey%3A%20aKey%0A%09%5Ekeys%20includes%3A%20aKey'), messageSends: ["includes:"], referencedClasses: [] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_asHashedCollection'), smalltalk.method({ selector: unescape('asHashedCollection'), category: 'converting', fn: function () { var self=this; return smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); return self;}, args: [], source: unescape('asHashedCollection%0A%09%5EHashedCollection%20fromPairs%3A%20self%20associations'), messageSends: ["fromPairs:", "associations"], referencedClasses: ["HashedCollection"] }), smalltalk.Dictionary); smalltalk.addMethod( unescape('_asJSONString'), smalltalk.method({ selector: unescape('asJSONString'), category: 'converting', fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asHashedCollection", []), "_asJSONString", []); return self;}, args: [], source: unescape('asJSONString%0A%09%5Eself%20asHashedCollection%20asJSONString'), messageSends: ["asJSONString", "asHashedCollection"], referencedClasses: [] }), smalltalk.Dictionary);