amber/js/Kernel-Collections.deploy.js in resin-0.2.1 vs amber/js/Kernel-Collections.deploy.js in resin-0.2.2

- old
+ new

@@ -1,2671 +1,2604 @@ smalltalk.addPackage('Kernel-Collections', {}); smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('__eq'), +"__eq", smalltalk.method({ -selector: unescape('%3D'), -fn: function (anAssociation) { +selector: "=", +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;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_key_'), +"_key", smalltalk.method({ -selector: unescape('key%3A'), -fn: function (aKey) { +selector: "key", +fn: function (){ var self=this; -(self['@key']=aKey); +return self['@key']; return self;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_key'), +"_key_", smalltalk.method({ -selector: unescape('key'), -fn: function () { +selector: "key:", +fn: function (aKey){ var self=this; -return self['@key']; +(self['@key']=aKey); return self;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_value_'), +"_storeOn_", smalltalk.method({ -selector: unescape('value%3A'), -fn: function (aValue) { +selector: "storeOn:", +fn: function (aStream){ var self=this; -(self['@value']=aValue); +smalltalk.send(self['@key'], "_storeOn_", [aStream]); +smalltalk.send(aStream, "_nextPutAll_", ["->"]); +smalltalk.send(self['@value'], "_storeOn_", [aStream]); return self;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_value'), +"_value", smalltalk.method({ -selector: unescape('value'), -fn: function () { +selector: "value", +fn: function (){ var self=this; return self['@value']; return self;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_storeOn_'), +"_value_", smalltalk.method({ -selector: unescape('storeOn%3A'), -fn: function (aStream) { +selector: "value:", +fn: function (aValue){ var self=this; -smalltalk.send(self['@key'], "_storeOn_", [aStream]); -smalltalk.send(aStream, "_nextPutAll_", [unescape("-%3E")]); -smalltalk.send(self['@value'], "_storeOn_", [aStream]); +(self['@value']=aValue); return self;} }), smalltalk.Association); smalltalk.addMethod( -unescape('_key_value_'), +"_key_value_", smalltalk.method({ -selector: unescape('key%3Avalue%3A'), -fn: function (aKey, aValue) { +selector: "key:value:", +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;} }), smalltalk.Association.klass); -smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections'); +smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_collection'), +"__comma", smalltalk.method({ -selector: unescape('collection'), -fn: function () { +selector: ",", +fn: function (aCollection){ var self=this; -return self['@collection']; +return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_setCollection_'), +"_add_", smalltalk.method({ -selector: unescape('setCollection%3A'), -fn: function (aCollection) { +selector: "add:", +fn: function (anObject){ var self=this; -(self['@collection']=aCollection); +smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_position'), +"_addAll_", smalltalk.method({ -selector: unescape('position'), -fn: function () { +selector: "addAll:", +fn: function (aCollection){ var self=this; -return (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return (self['@position']=(0));})() : $receiver; +smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]); +return aCollection; return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_position_'), +"_asArray", smalltalk.method({ -selector: unescape('position%3A'), -fn: function (anInteger) { +selector: "asArray", +fn: function (){ var self=this; -(self['@position']=anInteger); +return smalltalk.send((smalltalk.Array || Array), "_withAll_", [self]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_streamSize'), +"_asJSON", smalltalk.method({ -selector: unescape('streamSize'), -fn: function () { +selector: "asJSON", +fn: function (){ var self=this; -return self['@streamSize']; +return smalltalk.send(smalltalk.send(self, "_asArray", []), "_collect_", [(function(each){return smalltalk.send(each, "_asJSON", []);})]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_setStreamSize_'), +"_asOrderedCollection", smalltalk.method({ -selector: unescape('setStreamSize%3A'), -fn: function (anInteger) { +selector: "asOrderedCollection", +fn: function (){ var self=this; -(self['@streamSize']=anInteger); +return smalltalk.send(self, "_asArray", []); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_contents'), +"_asSet", smalltalk.method({ -selector: unescape('contents'), -fn: function () { +selector: "asSet", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]); +return smalltalk.send((smalltalk.Set || Set), "_withAll_", [self]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_size'), +"_collect_", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "collect:", +fn: function (aBlock){ var self=this; -return smalltalk.send(self, "_streamSize", []); +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;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_reset'), +"_copyWith_", smalltalk.method({ -selector: unescape('reset'), -fn: function () { +selector: "copyWith:", +fn: function (anObject){ var self=this; -smalltalk.send(self, "_position_", [(0)]); +return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_close'), +"_copyWithAll_", smalltalk.method({ -selector: unescape('close'), -fn: function () { +selector: "copyWithAll:", +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;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_flush'), +"_copyWithoutAll_", smalltalk.method({ -selector: unescape('flush'), -fn: function () { +selector: "copyWithoutAll:", +fn: function (aCollection){ var self=this; - +return smalltalk.send(self, "_reject_", [(function(each){return smalltalk.send(aCollection, "_includes_", [each]);})]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_resetContents'), +"_detect_", smalltalk.method({ -selector: unescape('resetContents'), -fn: function () { +selector: "detect:", +fn: function (aBlock){ var self=this; -smalltalk.send(self, "_reset", []); -smalltalk.send(self, "_setStreamSize_", [(0)]); +return smalltalk.send(self, "_detect_ifNone_", [aBlock, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_do_'), +"_detect_ifNone_", smalltalk.method({ -selector: unescape('do%3A'), -fn: function (aBlock) { +selector: "detect:ifNone:", +fn: function (aBlock, anotherBlock){ var self=this; -(function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})(); + + for(var i = 0; i < self.length; i++) + if(aBlock(self[i])) + return self[i]; + return anotherBlock(); + ; return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_setToEnd'), +"_do_", smalltalk.method({ -selector: unescape('setToEnd'), -fn: function () { +selector: "do:", +fn: function (aBlock){ var self=this; -smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]); +for(var i=0;i<self.length;i++){aBlock(self[i]);}; return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_skip_'), +"_do_separatedBy_", smalltalk.method({ -selector: unescape('skip%3A'), -fn: function (anInteger) { +selector: "do:separatedBy:", +fn: function (aBlock, anotherBlock){ 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)])]); +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;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_next'), +"_errorNotFound", smalltalk.method({ -selector: unescape('next'), -fn: function () { +selector: "errorNotFound", +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", [])]);})])); +smalltalk.send(self, "_error_", ["Object is not in the collection"]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_next_'), +"_ifEmpty_", smalltalk.method({ -selector: unescape('next%3A'), -fn: function (anInteger) { +selector: "ifEmpty:", +fn: function (aBlock){ 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 ((($receiver = smalltalk.send(self, "_isEmpty", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aBlock, "_value", []);})() : (function(){return self;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aBlock, "_value", []);}), (function(){return self;})])); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_nextPut_'), +"_ifNotEmpty_", smalltalk.method({ -selector: unescape('nextPut%3A'), -fn: function (anObject) { +selector: "ifNotEmpty:", +fn: function (aBlock){ 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", [])])]); +smalltalk.send(smalltalk.send(self, "_notEmpty", []), "_ifTrue_", [aBlock]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_nextPutAll_'), +"_includes_", smalltalk.method({ -selector: unescape('nextPutAll%3A'), -fn: function (aCollection) { +selector: "includes:", +fn: function (anObject){ var self=this; -smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]); + + var i = self.length; + while (i--) { + if (smalltalk.send(self[i], "__eq", [anObject])) {return true;} + } + return false + ; return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_peek'), +"_inject_into_", smalltalk.method({ -selector: unescape('peek'), -fn: function () { +selector: "inject:into:", +fn: function (anObject, aBlock){ 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)]))]);})])); +var result=nil; +(result=anObject); +smalltalk.send(self, "_do_", [(function(each){return (result=smalltalk.send(aBlock, "_value_value_", [result, each]));})]); +return result; return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_atEnd'), +"_isEmpty", smalltalk.method({ -selector: unescape('atEnd'), -fn: function () { +selector: "isEmpty", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]); +return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_atStart'), +"_notEmpty", smalltalk.method({ -selector: unescape('atStart'), -fn: function () { +selector: "notEmpty", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]); +return smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_not", []); return self;} }), -smalltalk.Stream); +smalltalk.Collection); smalltalk.addMethod( -unescape('_isEmpty'), +"_readStream", smalltalk.method({ -selector: unescape('isEmpty'), -fn: function () { +selector: "readStream", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); +return smalltalk.send(self, "_stream", []); return self;} }), -smalltalk.Stream); +smalltalk.Collection); - smalltalk.addMethod( -unescape('_on_'), +"_reject_", smalltalk.method({ -selector: unescape('on%3A'), -fn: function (aCollection) { +selector: "reject:", +fn: function (aBlock){ 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 smalltalk.send(self, "_select_", [(function(each){return smalltalk.send(smalltalk.send(aBlock, "_value_", [each]), "__eq", [false]);})]); return self;} }), -smalltalk.Stream.klass); +smalltalk.Collection); - -smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_compile_'), +"_remove_", smalltalk.method({ -selector: unescape('compile%3A'), -fn: function (aString) { +selector: "remove:", +fn: function (anObject){ var self=this; -return self.compile(aString); +return smalltalk.send(self, "_remove_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), -smalltalk.RegularExpression); +smalltalk.Collection); smalltalk.addMethod( -unescape('_exec_'), +"_remove_ifAbsent_", smalltalk.method({ -selector: unescape('exec%3A'), -fn: function (aString) { +selector: "remove:ifAbsent:", +fn: function (anObject, aBlock){ var self=this; -return self.exec(aString) || nil; +smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.RegularExpression); +smalltalk.Collection); smalltalk.addMethod( -unescape('_test_'), +"_select_", smalltalk.method({ -selector: unescape('test%3A'), -fn: function (aString) { +selector: "select:", +fn: function (aBlock){ var self=this; -return self.test(aString); +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;} }), -smalltalk.RegularExpression); +smalltalk.Collection); - smalltalk.addMethod( -unescape('_fromString_flag_'), +"_size", smalltalk.method({ -selector: unescape('fromString%3Aflag%3A'), -fn: function (aString, anotherString) { +selector: "size", +fn: function (){ var self=this; -return new RegExp(aString, anotherString); +smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.RegularExpression.klass); +smalltalk.Collection); smalltalk.addMethod( -unescape('_fromString_'), +"_stream", smalltalk.method({ -selector: unescape('fromString%3A'), -fn: function (aString) { +selector: "stream", +fn: function (){ var self=this; -return smalltalk.send(self, "_fromString_flag_", [aString, ""]); +return smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [self]); return self;} }), -smalltalk.RegularExpression.klass); +smalltalk.Collection); - -smalltalk.addClass('Collection', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_size'), +"_streamClass", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "streamClass", +fn: function (){ var self=this; -smalltalk.send(self, "_subclassResponsibility", []); +return smalltalk.send(smalltalk.send(self, "_class", []), "_streamClass", []); return self;} }), smalltalk.Collection); smalltalk.addMethod( -unescape('_readStream'), +"_writeStream", smalltalk.method({ -selector: unescape('readStream'), -fn: function () { +selector: "writeStream", +fn: function (){ var self=this; return smalltalk.send(self, "_stream", []); return self;} }), smalltalk.Collection); + smalltalk.addMethod( -unescape('_writeStream'), +"_new_", smalltalk.method({ -selector: unescape('writeStream'), -fn: function () { +selector: "new:", +fn: function (anInteger){ var self=this; -return smalltalk.send(self, "_stream", []); +return smalltalk.send(self, "_new", []); return self;} }), -smalltalk.Collection); +smalltalk.Collection.klass); smalltalk.addMethod( -unescape('_stream'), +"_streamClass", smalltalk.method({ -selector: unescape('stream'), -fn: function () { +selector: "streamClass", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_streamClass", []), "_on_", [self]); +return (smalltalk.Stream || Stream); return self;} }), -smalltalk.Collection); +smalltalk.Collection.klass); smalltalk.addMethod( -unescape('_streamClass'), +"_with_", smalltalk.method({ -selector: unescape('streamClass'), -fn: function () { +selector: "with:", +fn: function (anObject){ var self=this; -return smalltalk.send(smalltalk.send(self, "_class", []), "_streamClass", []); +return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;} }), -smalltalk.Collection); +smalltalk.Collection.klass); smalltalk.addMethod( -unescape('_add_'), +"_with_with_", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anObject) { +selector: "with:with:", +fn: function (anObject, anotherObject){ var self=this; -smalltalk.send(self, "_subclassResponsibility", []); +return (function($rec){smalltalk.send($rec, "_add_", [anObject]);smalltalk.send($rec, "_add_", [anotherObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;} }), -smalltalk.Collection); +smalltalk.Collection.klass); smalltalk.addMethod( -unescape('_addAll_'), +"_with_with_with_", smalltalk.method({ -selector: unescape('addAll%3A'), -fn: function (aCollection) { +selector: "with:with:with:", +fn: function (firstObject, secondObject, thirdObject){ var self=this; -smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]); -return aCollection; +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;} }), -smalltalk.Collection); +smalltalk.Collection.klass); smalltalk.addMethod( -unescape('__comma'), +"_withAll_", smalltalk.method({ -selector: unescape('%2C'), -fn: function (aCollection) { +selector: "withAll:", +fn: function (aCollection){ var self=this; -return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); +return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;} }), -smalltalk.Collection); +smalltalk.Collection.klass); + +smalltalk.addClass('HashedCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_copyWith_'), +"__comma", smalltalk.method({ -selector: unescape('copyWith%3A'), -fn: function (anObject) { +selector: ",", +fn: function (aCollection){ var self=this; -return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); +smalltalk.send(self, "_shouldNotImplement", []); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_copyWithAll_'), +"__eq", smalltalk.method({ -selector: unescape('copyWithAll%3A'), -fn: function (aCollection) { +selector: "=", +fn: function (aHashedCollection){ var self=this; -return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); -return self;} +var $early={}; +try{((($receiver = smalltalk.send(smalltalk.send(self, "_class", []), "__eq", [smalltalk.send(aHashedCollection, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})])); +((($receiver = smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [smalltalk.send(aHashedCollection, "_size", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})])); +return smalltalk.send(smalltalk.send(self, "_associations", []), "__eq", [smalltalk.send(aHashedCollection, "_associations", [])]); +return self; +} catch(e) {if(e===$early)return e[0]; throw e}} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_asArray'), +"_add_", smalltalk.method({ -selector: unescape('asArray'), -fn: function () { +selector: "add:", +fn: function (anAssociation){ var self=this; -return smalltalk.send((smalltalk.Array || Array), "_withAll_", [self]); +smalltalk.send(self, "_at_put_", [smalltalk.send(anAssociation, "_key", []), smalltalk.send(anAssociation, "_value", [])]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_do_'), +"_addAll_", smalltalk.method({ -selector: unescape('do%3A'), -fn: function (aBlock) { +selector: "addAll:", +fn: function (aHashedCollection){ var self=this; -for(var i=0;i<self.length;i++){aBlock(self[i]);}; +smalltalk.send(self, "_addAll_", [smalltalk.send(aHashedCollection, "_associations", [])], smalltalk.HashedCollection.superclass || nil); +return aHashedCollection; return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_collect_'), +"_asDictionary", smalltalk.method({ -selector: unescape('collect%3A'), -fn: function (aBlock) { +selector: "asDictionary", +fn: function (){ 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 smalltalk.send((smalltalk.Dictionary || Dictionary), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_detect_'), +"_asJSON", smalltalk.method({ -selector: unescape('detect%3A'), -fn: function (aBlock) { +selector: "asJSON", +fn: function (){ var self=this; -return smalltalk.send(self, "_detect_ifNone_", [aBlock, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); +var c=nil; +(c=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); +smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return smalltalk.send(c, "_at_put_", [key, smalltalk.send(value, "_asJSON", [])]);})]); +return c; return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_detect_ifNone_'), +"_associations", smalltalk.method({ -selector: unescape('detect%3AifNone%3A'), -fn: function (aBlock, anotherBlock) { +selector: "associations", +fn: function (){ var self=this; - - for(var i = 0; i < self.length; i++) - if(aBlock(self[i])) - return self[i]; - return anotherBlock(); - ; +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;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_do_separatedBy_'), +"_associationsDo_", smalltalk.method({ -selector: unescape('do%3AseparatedBy%3A'), -fn: function (aBlock, anotherBlock) { +selector: "associationsDo:", +fn: function (aBlock){ 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]);})]); +smalltalk.send(smalltalk.send(self, "_associations", []), "_do_", [aBlock]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_inject_into_'), +"_at_", smalltalk.method({ -selector: unescape('inject%3Ainto%3A'), -fn: function (anObject, aBlock) { +selector: "at:", +fn: function (aKey){ 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 smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_reject_'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('reject%3A'), -fn: function (aBlock) { +selector: "at:ifAbsent:", +fn: function (aKey, aBlock){ var self=this; -return smalltalk.send(self, "_select_", [(function(each){return smalltalk.send(smalltalk.send(aBlock, "_value_", [each]), "__eq", [false]);})]); +return smalltalk.send(smalltalk.send(self, "_includesKey_", [aKey]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_basicAt_", [aKey]);}), aBlock]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_select_'), +"_at_ifAbsentPut_", smalltalk.method({ -selector: unescape('select%3A'), -fn: function (aBlock) { +selector: "at:ifAbsentPut:", +fn: function (aKey, 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 smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_at_put_", [aKey, smalltalk.send(aBlock, "_value", [])]);})]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_errorNotFound'), +"_at_ifPresent_", smalltalk.method({ -selector: unescape('errorNotFound'), -fn: function () { +selector: "at:ifPresent:", +fn: function (aKey, aBlock){ var self=this; -smalltalk.send(self, "_error_", ["Object is not in the collection"]); +return (($receiver = smalltalk.send(self, "_basicAt_", [aKey])) != nil && $receiver != undefined) ? (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})() : nil; return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_includes_'), +"_at_ifPresent_ifAbsent_", smalltalk.method({ -selector: unescape('includes%3A'), -fn: function (anObject) { +selector: "at:ifPresent:ifAbsent:", +fn: function (aKey, aBlock, anotherBlock){ var self=this; - - var i = self.length; - while (i--) { - if (smalltalk.send(self[i], "__eq", [anObject])) {return true;} - } - return false - ; +return smalltalk.send(smalltalk.send(self, "_basicAt_", [aKey]), "_ifNil_ifNotNil_", [anotherBlock, (function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_at_", [aKey])]);})]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_notEmpty'), +"_at_put_", smalltalk.method({ -selector: unescape('notEmpty'), -fn: function () { +selector: "at:put:", +fn: function (aKey, aValue){ var self=this; -return smalltalk.send(smalltalk.send(self, "_isEmpty", []), "_not", []); +return smalltalk.send(self, "_basicAt_put_", [aKey, aValue]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_isEmpty'), +"_collect_", smalltalk.method({ -selector: unescape('isEmpty'), -fn: function () { +selector: "collect:", +fn: function (aBlock){ var self=this; -return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); +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;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_remove_'), +"_copyFrom_to_", smalltalk.method({ -selector: unescape('remove%3A'), -fn: function (anObject) { +selector: "copyFrom:to:", +fn: function (anIndex, anotherIndex){ var self=this; -return smalltalk.send(self, "_remove_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); +smalltalk.send(self, "_shouldNotImplement", []); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_asSet'), +"_deepCopy", smalltalk.method({ -selector: unescape('asSet'), -fn: function () { +selector: "deepCopy", +fn: function (){ var self=this; -return smalltalk.send((smalltalk.Set || Set), "_withAll_", [self]); +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;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_ifNotEmpty_'), +"_detect_ifNone_", smalltalk.method({ -selector: unescape('ifNotEmpty%3A'), -fn: function (aBlock) { +selector: "detect:ifNone:", +fn: function (aBlock, anotherBlock){ var self=this; -smalltalk.send(smalltalk.send(self, "_notEmpty", []), "_ifTrue_", [aBlock]); +return smalltalk.send(smalltalk.send(self, "_values", []), "_detect_ifNone_", [aBlock, anotherBlock]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_ifEmpty_'), +"_do_", smalltalk.method({ -selector: unescape('ifEmpty%3A'), +selector: "do:", fn: function (aBlock){ var self=this; -return ((($receiver = smalltalk.send(self, "_isEmpty", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(aBlock, "_value", []);})() : (function(){return self;})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return smalltalk.send(aBlock, "_value", []);}), (function(){return self;})])); +smalltalk.send(smalltalk.send(self, "_values", []), "_do_", [aBlock]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_copyWithoutAll_'), +"_includes_", smalltalk.method({ -selector: unescape('copyWithoutAll%3A'), -fn: function (aCollection) { +selector: "includes:", +fn: function (anObject){ var self=this; -return smalltalk.send(self, "_reject_", [(function(each){return smalltalk.send(aCollection, "_includes_", [each]);})]); +return smalltalk.send(smalltalk.send(self, "_values", []), "_includes_", [anObject]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_remove_ifAbsent_'), +"_includesKey_", smalltalk.method({ -selector: unescape('remove%3AifAbsent%3A'), -fn: function (anObject, aBlock) { +selector: "includesKey:", +fn: function (aKey){ var self=this; -smalltalk.send(self, "_subclassResponsibility", []); +return self.hasOwnProperty(aKey); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_asOrderedCollection'), +"_keys", smalltalk.method({ -selector: unescape('asOrderedCollection'), -fn: function () { +selector: "keys", +fn: function (){ var self=this; -return smalltalk.send(self, "_asArray", []); + + if ('function'===typeof Object.keys) return Object.keys(self); + var keys = []; + for(var i in self) { + if(self.hasOwnProperty(i)) { + keys.push(i); + } + }; + return keys; + ; return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_asJSON'), +"_keysAndValuesDo_", smalltalk.method({ -selector: unescape('asJSON'), -fn: function (){ +selector: "keysAndValuesDo:", +fn: function (aBlock){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asArray", []), "_collect_", [(function(each){return smalltalk.send(each, "_asJSON", []);})]); +smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(aBlock, "_value_value_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]); return self;} }), -smalltalk.Collection); +smalltalk.HashedCollection); - smalltalk.addMethod( -unescape('_streamClass'), +"_printString", smalltalk.method({ -selector: unescape('streamClass'), -fn: function () { +selector: "printString", +fn: function (){ var self=this; -return (smalltalk.Stream || Stream); +return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(aStream){(function($rec){smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(self, "_printString", [], smalltalk.HashedCollection.superclass || nil)]);return smalltalk.send($rec, "_nextPutAll_", ["("]);})(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_", [" -> "]);return smalltalk.send($rec, "_nextPutAll_", [smalltalk.send(smalltalk.send(anAssociation, "_value", []), "_printString", [])]);})(aStream);}), (function(){return smalltalk.send(aStream, "_nextPutAll_", [" , "]);})]);return smalltalk.send(aStream, "_nextPutAll_", [")"]);})]); return self;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_with_'), +"_remove_ifAbsent_", smalltalk.method({ -selector: unescape('with%3A'), -fn: function (anObject) { +selector: "remove:ifAbsent:", +fn: function (aKey, aBlock){ var self=this; -return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); +return smalltalk.send(self, "_removeKey_ifAbsent_", [aKey, aBlock]); return self;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_with_with_'), +"_removeKey_", smalltalk.method({ -selector: unescape('with%3Awith%3A'), -fn: function (anObject, anotherObject) { +selector: "removeKey:", +fn: function (aKey){ 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 smalltalk.send(self, "_remove_", [aKey]); return self;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_with_with_with_'), +"_removeKey_ifAbsent_", smalltalk.method({ -selector: unescape('with%3Awith%3Awith%3A'), -fn: function (firstObject, secondObject, thirdObject) { +selector: "removeKey:ifAbsent:", +fn: function (aKey, aBlock){ 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 ((($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;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_withAll_'), +"_select_", smalltalk.method({ -selector: unescape('withAll%3A'), -fn: function (aCollection) { +selector: "select:", +fn: function (aBlock){ var self=this; -return (function($rec){smalltalk.send($rec, "_addAll_", [aCollection]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); +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;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_new_'), +"_shallowCopy", smalltalk.method({ -selector: unescape('new%3A'), -fn: function (anInteger) { +selector: "shallowCopy", +fn: function (){ var self=this; -return smalltalk.send(self, "_new", []); +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;} }), -smalltalk.Collection.klass); +smalltalk.HashedCollection); - -smalltalk.addClass('SequenceableCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_at_'), +"_size", smalltalk.method({ -selector: unescape('at%3A'), -fn: function (anIndex) { +selector: "size", +fn: function (){ var self=this; -return smalltalk.send(self, "_at_ifAbsent_", [anIndex, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); +return smalltalk.send(smalltalk.send(self, "_keys", []), "_size", []); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_storeOn_", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (anIndex, aBlock) { +selector: "storeOn:", +fn: function (aStream){ var self=this; -smalltalk.send(self, "_subclassResponsibility", []); +smalltalk.send(aStream, "_nextPutAll_", ["#{"]); +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_", ["}"]); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_at_put_'), +"_values", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (anIndex, anObject) { +selector: "values", +fn: function (){ var self=this; -smalltalk.send(self, "_subclassResponsibility", []); +return smalltalk.send(smalltalk.send(self, "_keys", []), "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.HashedCollection); + smalltalk.addMethod( -unescape('_copyFrom_to_'), +"_fromPairs_", smalltalk.method({ -selector: unescape('copyFrom%3Ato%3A'), -fn: function (anIndex, anotherIndex) { +selector: "fromPairs:", +fn: function (aCollection){ 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; +var dict=nil; +(dict=smalltalk.send(self, "_new", [])); +smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(dict, "_add_", [each]);})]); +return dict; return self;} }), -smalltalk.SequenceableCollection); +smalltalk.HashedCollection.klass); + +smalltalk.addClass('Dictionary', smalltalk.HashedCollection, ['keys', 'values'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_first'), +"_asHashedCollection", smalltalk.method({ -selector: unescape('first'), -fn: function () { +selector: "asHashedCollection", +fn: function (){ var self=this; -return smalltalk.send(self, "_at_", [(1)]); +return smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_fourth'), +"_asJSON", smalltalk.method({ -selector: unescape('fourth'), -fn: function () { +selector: "asJSON", +fn: function (){ var self=this; -return smalltalk.send(self, "_at_", [(4)]); +return smalltalk.send(smalltalk.send(self, "_asHashedCollection", []), "_asJSON", []); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_last'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('last'), -fn: function () { +selector: "at:ifAbsent:", +fn: function (aKey, aBlock){ var self=this; -return smalltalk.send(self, "_at_", [smalltalk.send(self, "_size", [])]); + + 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;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_second'), +"_at_put_", smalltalk.method({ -selector: unescape('second'), -fn: function () { +selector: "at:put:", +fn: function (aKey, aValue){ var self=this; -return smalltalk.send(self, "_at_", [(2)]); + + 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;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_third'), +"_includesKey_", smalltalk.method({ -selector: unescape('third'), -fn: function () { +selector: "includesKey:", +fn: function (aKey){ var self=this; -return smalltalk.send(self, "_at_", [(3)]); +return smalltalk.send(self['@keys'], "_includes_", [aKey]); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_removeLast'), +"_initialize", smalltalk.method({ -selector: unescape('removeLast'), -fn: function () { +selector: "initialize", +fn: function (){ var self=this; -smalltalk.send(self, "_remove_", [smalltalk.send(self, "_last", [])]); +smalltalk.send(self, "_initialize", [], smalltalk.Dictionary.superclass || nil); +(self['@keys']=[]); +(self['@values']=[]); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_addLast_'), +"_keys", smalltalk.method({ -selector: unescape('addLast%3A'), -fn: function (anObject) { +selector: "keys", +fn: function (){ var self=this; -smalltalk.send(self, "_add_", [anObject]); +return smalltalk.send(self['@keys'], "_copy", []); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_withIndexDo_'), +"_removeKey_ifAbsent_", smalltalk.method({ -selector: unescape('withIndexDo%3A'), -fn: function (aBlock) { +selector: "removeKey:ifAbsent:", +fn: function (aKey, aBlock){ var self=this; -for(var i=0;i<self.length;i++){aBlock(self[i], i+1);}; + + var index = self['@keys'].indexOf(aKey); + if(index === -1) { + return aBlock() + } else { + var value; + self['@keys'].splice(index, 1); + value = self['@values'].splice(index, 1); + return value[0]; + }; + ; return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); smalltalk.addMethod( -unescape('_allButFirst'), +"_values", smalltalk.method({ -selector: unescape('allButFirst'), -fn: function () { +selector: "values", +fn: function (){ var self=this; -return smalltalk.send(self, "_copyFrom_to_", [(2), smalltalk.send(self, "_size", [])]); +return smalltalk.send(self['@values'], "_copy", []); return self;} }), -smalltalk.SequenceableCollection); +smalltalk.Dictionary); + + +smalltalk.addClass('SequenceableCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_allButLast'), +"__eq", smalltalk.method({ -selector: unescape('allButLast'), -fn: function () { +selector: "=", +fn: function (aCollection){ 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;} +var $early={}; +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 $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[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 $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})]));})]); +return true; +return self; +} catch(e) {if(e===$early)return e[0]; throw e}} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_indexOf_'), +"_addLast_", smalltalk.method({ -selector: unescape('indexOf%3A'), -fn: function (anObject) { +selector: "addLast:", +fn: function (anObject){ var self=this; -return smalltalk.send(self, "_indexOf_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); +smalltalk.send(self, "_add_", [anObject]); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_indexOf_ifAbsent_'), +"_allButFirst", smalltalk.method({ -selector: unescape('indexOf%3AifAbsent%3A'), -fn: function (anObject, aBlock) { +selector: "allButFirst", +fn: function (){ var self=this; - - for(var i=0;i<self.length;i++){ - if(self[i].__eq(anObject)) {return i+1} - } - return aBlock(); - ; +return smalltalk.send(self, "_copyFrom_to_", [(2), smalltalk.send(self, "_size", [])]); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_indexOf_startingAt_ifAbsent_'), +"_allButLast", smalltalk.method({ -selector: unescape('indexOf%3AstartingAt%3AifAbsent%3A'), -fn: function (anObject, start, aBlock) { +selector: "allButLast", +fn: function (){ var self=this; - - for(var i=start-1;i<self.length;i++){ - if(self[i].__eq(anObject)) {return i+1} - } - return aBlock(); - ; +return smalltalk.send(self, "_copyFrom_to_", [(1), ((($receiver = smalltalk.send(self, "_size", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)]))]); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_indexOf_startingAt_'), +"_at_", smalltalk.method({ -selector: unescape('indexOf%3AstartingAt%3A'), -fn: function (anObject, start) { +selector: "at:", +fn: function (anIndex){ var self=this; -return smalltalk.send(self, "_indexOf_startingAt_ifAbsent_", [anObject, start, (function(){return (0);})]); +return smalltalk.send(self, "_at_ifAbsent_", [anIndex, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_reversed'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('reversed'), -fn: function () { +selector: "at:ifAbsent:", +fn: function (anIndex, aBlock){ var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_atRandom'), +"_at_put_", smalltalk.method({ -selector: unescape('atRandom'), -fn: function () { +selector: "at:put:", +fn: function (anIndex, anObject){ var self=this; -return smalltalk.send(self, "_at_", [smalltalk.send(smalltalk.send(self, "_size", []), "_atRandom", [])]); +smalltalk.send(self, "_subclassResponsibility", []); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('__eq'), +"_atRandom", smalltalk.method({ -selector: unescape('%3D'), -fn: function (aCollection) { +selector: "atRandom", +fn: function (){ 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)}} +return smalltalk.send(self, "_at_", [smalltalk.send(smalltalk.send(self, "_size", []), "_atRandom", [])]); +return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_shallowCopy'), +"_copyFrom_to_", smalltalk.method({ -selector: unescape('shallowCopy'), -fn: function () { +selector: "copyFrom:to:", +fn: function (anIndex, anotherIndex){ var self=this; +var range=nil; 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]);})]); +(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;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_deepCopy'), +"_deepCopy", smalltalk.method({ -selector: unescape('deepCopy'), -fn: function () { +selector: "deepCopy", +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;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_printString'), +"_first", smalltalk.method({ -selector: unescape('printString'), -fn: function () { +selector: "first", +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 smalltalk.send(self, "_at_", [(1)]); return self;} }), smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_first_'), +"_first_", smalltalk.method({ -selector: unescape('first%3A'), +selector: "first:", fn: function (n){ var self=this; return smalltalk.send(self, "_copyFrom_to_", [(1), n]); return self;} }), smalltalk.SequenceableCollection); - - -smalltalk.addClass('CharacterArray', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_at_put_'), +"_fourth", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (anIndex, anObject) { +selector: "fourth", +fn: function (){ var self=this; -smalltalk.send(self, "_errorReadOnly", []); +return smalltalk.send(self, "_at_", [(4)]); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_add_'), +"_indexOf_", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anObject) { +selector: "indexOf:", +fn: function (anObject){ var self=this; -smalltalk.send(self, "_errorReadOnly", []); +return smalltalk.send(self, "_indexOf_ifAbsent_", [anObject, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('__comma'), +"_indexOf_ifAbsent_", smalltalk.method({ -selector: unescape('%2C'), -fn: function (aString) { +selector: "indexOf:ifAbsent:", +fn: function (anObject, aBlock){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "__comma", [smalltalk.send(aString, "_asString", [])]); -return self;} -}), -smalltalk.CharacterArray); -smalltalk.addMethod( -unescape('_asString'), -smalltalk.method({ -selector: unescape('asString'), -fn: function () { -var self=this; -return smalltalk.send(self, "_subclassResponsibility", []); + for(var i=0;i<self.length;i++){ + if(self[i].__eq(anObject)) {return i+1} + } + return aBlock(); + ; return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_asNumber'), +"_indexOf_startingAt_", smalltalk.method({ -selector: unescape('asNumber'), -fn: function () { +selector: "indexOf:startingAt:", +fn: function (anObject, start){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_asNumber", []); +return smalltalk.send(self, "_indexOf_startingAt_ifAbsent_", [anObject, start, (function(){return (0);})]); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_errorReadOnly'), +"_indexOf_startingAt_ifAbsent_", smalltalk.method({ -selector: unescape('errorReadOnly'), -fn: function () { +selector: "indexOf:startingAt:ifAbsent:", +fn: function (anObject, start, aBlock){ var self=this; -smalltalk.send(self, "_error_", [unescape("Object%20is%20read-only")]); -return self;} -}), -smalltalk.CharacterArray); -smalltalk.addMethod( -unescape('_printString'), -smalltalk.method({ -selector: unescape('printString'), -fn: function () { -var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_printString", []); + for(var i=start-1;i<self.length;i++){ + if(self[i].__eq(anObject)) {return i+1} + } + return aBlock(); + ; return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_remove_'), +"_last", smalltalk.method({ -selector: unescape('remove%3A'), -fn: function (anObject) { +selector: "last", +fn: function (){ var self=this; -smalltalk.send(self, "_errorReadOnly", []); +return smalltalk.send(self, "_at_", [smalltalk.send(self, "_size", [])]); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_asUppercase'), +"_printString", smalltalk.method({ -selector: unescape('asUppercase'), -fn: function () { +selector: "printString", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asUppercase", [])]); +var str=nil; +(str=smalltalk.send("", "_writeStream", [])); +smalltalk.send(str, "_nextPutAll_", [smalltalk.send(smalltalk.send(self, "_printString", [], smalltalk.SequenceableCollection.superclass || nil), "__comma", [" ("])]); +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_", [")"]); +return smalltalk.send(str, "_contents", []); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_asSymbol'), +"_removeLast", smalltalk.method({ -selector: unescape('asSymbol'), -fn: function () { +selector: "removeLast", +fn: function (){ var self=this; -return smalltalk.send(self, "_subclassResponsibility", []); +smalltalk.send(self, "_remove_", [smalltalk.send(self, "_last", [])]); return self;} }), -smalltalk.CharacterArray); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_asLowercase'), +"_reversed", smalltalk.method({ -selector: unescape('asLowercase'), -fn: function () { +selector: "reversed", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asLowercase", [])]); -return self;} -}), -smalltalk.CharacterArray); - - -smalltalk.addMethod( -unescape('_fromString_'), -smalltalk.method({ -selector: unescape('fromString%3A'), -fn: function (aString) { -var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.CharacterArray.klass); +smalltalk.SequenceableCollection); - -smalltalk.addClass('String', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('__eq'), +"_second", smalltalk.method({ -selector: unescape('%3D'), -fn: function (aString) { +selector: "second", +fn: function (){ 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)}} -}), -smalltalk.String); - -smalltalk.addMethod( -unescape('_size'), -smalltalk.method({ -selector: unescape('size'), -fn: function () { -var self=this; -return self.length; +return smalltalk.send(self, "_at_", [(2)]); return self;} }), -smalltalk.String); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_shallowCopy", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (anIndex, aBlock) { +selector: "shallowCopy", +fn: function (){ var self=this; -return self[anIndex - 1] || aBlock(); +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;} }), -smalltalk.String); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_escaped'), +"_third", smalltalk.method({ -selector: unescape('escaped'), -fn: function () { +selector: "third", +fn: function (){ var self=this; -return escape(self); +return smalltalk.send(self, "_at_", [(3)]); return self;} }), -smalltalk.String); +smalltalk.SequenceableCollection); smalltalk.addMethod( -unescape('_unescaped'), +"_withIndexDo_", smalltalk.method({ -selector: unescape('unescaped'), -fn: function () { +selector: "withIndexDo:", +fn: function (aBlock){ var self=this; -return unescape(self); +for(var i=0;i<self.length;i++){aBlock(self[i], i+1);}; return self;} }), -smalltalk.String); +smalltalk.SequenceableCollection); + + +smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('__comma'), +"_add_", smalltalk.method({ -selector: unescape('%2C'), -fn: function (aString) { +selector: "add:", +fn: function (anObject){ var self=this; -return self + aString; +self.push(anObject); return anObject;; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_copyFrom_to_'), +"_asJavascript", smalltalk.method({ -selector: unescape('copyFrom%3Ato%3A'), -fn: function (anIndex, anotherIndex) { +selector: "asJavascript", +fn: function (){ var self=this; -return self.substring(anIndex - 1, anotherIndex); +return smalltalk.send(smalltalk.send("[", "__comma", [smalltalk.send(smalltalk.send(self, "_collect_", [(function(each){return smalltalk.send(each, "_asJavascript", []);})]), "_join_", [", "])]), "__comma", ["]"]); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_shallowCopy'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('shallowCopy'), -fn: function () { +selector: "at:ifAbsent:", +fn: function (anIndex, aBlock){ var self=this; -return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [self]); + + if((anIndex < 1) || (self.length < anIndex)) {return aBlock()}; + return self[anIndex - 1]; + ; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_deepCopy'), +"_at_put_", smalltalk.method({ -selector: unescape('deepCopy'), -fn: function () { +selector: "at:put:", +fn: function (anIndex, anObject){ var self=this; -return smalltalk.send(self, "_shallowCopy", []); +return self[anIndex - 1] = anObject; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_asSelector'), +"_join_", smalltalk.method({ -selector: unescape('asSelector'), -fn: function () { +selector: "join:", +fn: function (aString){ 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.join(aString); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_asJavascript'), +"_remove_", smalltalk.method({ -selector: unescape('asJavascript'), -fn: function () { +selector: "remove:", +fn: function (anObject){ var self=this; - if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1) - return "unescape(\"" + escape(self) + "\")"; - else - return "\"" + self + "\""; + for(var i=0;i<self.length;i++) { + if(self[i] == anObject) { + self.splice(i,1); + break; + } + } ; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_replace_with_'), +"_removeFrom_to_", smalltalk.method({ -selector: unescape('replace%3Awith%3A'), -fn: function (aString, anotherString) { +selector: "removeFrom:to:", +fn: function (aNumber, anotherNumber){ var self=this; -return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [aString, "g"]), anotherString]); +self.splice(aNumber - 1,anotherNumber - 1); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_replaceRegexp_with_'), +"_reversed", smalltalk.method({ -selector: unescape('replaceRegexp%3Awith%3A'), -fn: function (aRegexp, aString) { +selector: "reversed", +fn: function (){ var self=this; -return self.replace(aRegexp, aString); +return self._copy().reverse(); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_tokenize_'), +"_size", smalltalk.method({ -selector: unescape('tokenize%3A'), -fn: function (aString) { +selector: "size", +fn: function (){ var self=this; -return self.split(aString); +return self.length; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_match_'), +"_sort", smalltalk.method({ -selector: unescape('match%3A'), -fn: function (aRegexp) { +selector: "sort", +fn: function (){ var self=this; -return self.search(aRegexp) != -1; +return smalltalk.send(self, "_basicPerform_", ["sort"]); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_asString'), +"_sort_", smalltalk.method({ -selector: unescape('asString'), -fn: function () { +selector: "sort:", +fn: function (aBlock){ var self=this; -return self; + + return self.sort(function(a, b) { + if(aBlock(a,b)) {return -1} else {return 1} + }) + ; return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_asNumber'), +"_sorted", smalltalk.method({ -selector: unescape('asNumber'), -fn: function () { +selector: "sorted", +fn: function (){ var self=this; -return Number(self); +return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []); return self;} }), -smalltalk.String); +smalltalk.Array); smalltalk.addMethod( -unescape('_printString'), +"_sorted_", smalltalk.method({ -selector: unescape('printString'), -fn: function () { +selector: "sorted:", +fn: function (aBlock){ var self=this; -return smalltalk.send(smalltalk.send(unescape("%27"), "__comma", [self]), "__comma", [unescape("%27")]); +return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]); return self;} }), -smalltalk.String); +smalltalk.Array); + smalltalk.addMethod( -unescape('_printNl'), +"_new_", smalltalk.method({ -selector: unescape('printNl'), -fn: function () { +selector: "new:", +fn: function (anInteger){ var self=this; -console.log(self); +return new Array(anInteger); return self;} }), -smalltalk.String); +smalltalk.Array.klass); smalltalk.addMethod( -unescape('_isString'), +"_with_", smalltalk.method({ -selector: unescape('isString'), -fn: function () { +selector: "with:", +fn: function (anObject){ var self=this; -return true; +return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(1)])); return self;} }), -smalltalk.String); +smalltalk.Array.klass); smalltalk.addMethod( -unescape('__gt'), +"_with_with_", smalltalk.method({ -selector: unescape('%3E'), -fn: function (aString) { +selector: "with:with:", +fn: function (anObject, anObject2){ var self=this; -return String(self) > aString._asString(); +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;} }), -smalltalk.String); +smalltalk.Array.klass); smalltalk.addMethod( -unescape('__lt'), +"_with_with_with_", smalltalk.method({ -selector: unescape('%3C'), -fn: function (aString) { +selector: "with:with:with:", +fn: function (anObject, anObject2, anObject3){ var self=this; -return String(self) < aString._asString(); +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;} }), -smalltalk.String); +smalltalk.Array.klass); smalltalk.addMethod( -unescape('__gt_eq'), +"_withAll_", smalltalk.method({ -selector: unescape('%3E%3D'), -fn: function (aString) { +selector: "withAll:", +fn: function (aCollection){ var self=this; -return String(self) >= aString._asString(); +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;} }), -smalltalk.String); +smalltalk.Array.klass); + +smalltalk.addClass('CharacterArray', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('__lt_eq'), +"__comma", smalltalk.method({ -selector: unescape('%3C%3D'), -fn: function (aString) { +selector: ",", +fn: function (aString){ var self=this; -return String(self) <= aString._asString(); +return smalltalk.send(smalltalk.send(self, "_asString", []), "__comma", [smalltalk.send(aString, "_asString", [])]); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimLeft_'), +"_add_", smalltalk.method({ -selector: unescape('trimLeft%3A'), -fn: function (separators) { +selector: "add:", +fn: function (anObject){ 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"]), ""]); +smalltalk.send(self, "_errorReadOnly", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimRight_'), +"_asLowercase", smalltalk.method({ -selector: unescape('trimRight%3A'), -fn: function (separators) { +selector: "asLowercase", +fn: function (){ 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 smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asLowercase", [])]); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimLeft'), +"_asNumber", smalltalk.method({ -selector: unescape('trimLeft'), -fn: function () { +selector: "asNumber", +fn: function (){ var self=this; -return smalltalk.send(self, "_trimLeft_", [unescape("%5Cs")]); +return smalltalk.send(smalltalk.send(self, "_asString", []), "_asNumber", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimRight'), +"_asString", smalltalk.method({ -selector: unescape('trimRight'), -fn: function () { +selector: "asString", +fn: function (){ var self=this; -return smalltalk.send(self, "_trimRight_", [unescape("%5Cs")]); +return smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimBoth'), +"_asSymbol", smalltalk.method({ -selector: unescape('trimBoth'), -fn: function () { +selector: "asSymbol", +fn: function (){ var self=this; -return smalltalk.send(self, "_trimBoth_", [unescape("%5Cs")]); +return smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_trimBoth_'), +"_asUppercase", smalltalk.method({ -selector: unescape('trimBoth%3A'), -fn: function (separators) { +selector: "asUppercase", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_trimLeft_", [separators]), "_trimRight_", [separators]); +return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_asUppercase", [])]); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_asLowercase'), +"_at_put_", smalltalk.method({ -selector: unescape('asLowercase'), -fn: function () { +selector: "at:put:", +fn: function (anIndex, anObject){ var self=this; -return self.toLowerCase(); +smalltalk.send(self, "_errorReadOnly", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_asUppercase'), +"_errorReadOnly", smalltalk.method({ -selector: unescape('asUppercase'), -fn: function () { +selector: "errorReadOnly", +fn: function (){ var self=this; -return self.toUpperCase(); +smalltalk.send(self, "_error_", ["Object is read-only"]); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_join_'), +"_printString", smalltalk.method({ -selector: unescape('join%3A'), -fn: function (aCollection) { +selector: "printString", +fn: function (){ 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 smalltalk.send(smalltalk.send(self, "_asString", []), "_printString", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); smalltalk.addMethod( -unescape('_includesSubString_'), +"_remove_", smalltalk.method({ -selector: unescape('includesSubString%3A'), -fn: function (subString) { +selector: "remove:", +fn: function (anObject){ var self=this; - return self.indexOf(subString) != -1 ; +smalltalk.send(self, "_errorReadOnly", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray); + smalltalk.addMethod( -unescape('_asciiValue'), +"_fromString_", smalltalk.method({ -selector: unescape('asciiValue'), -fn: function () { +selector: "fromString:", +fn: function (aString){ var self=this; -return self.charCodeAt(0);; +smalltalk.send(self, "_subclassResponsibility", []); return self;} }), -smalltalk.String); +smalltalk.CharacterArray.klass); + +smalltalk.addClass('String', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_lineIndicesDo_'), +"__comma", smalltalk.method({ -selector: unescape('lineIndicesDo%3A'), -fn: function (aBlock) { +selector: ",", +fn: function (aString){ 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)}} +return self + aString; +return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_linesDo_'), +"__lt", smalltalk.method({ -selector: unescape('linesDo%3A'), -fn: function (aBlock) { +selector: "<", +fn: function (aString){ var self=this; -smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]);})]); +return String(self) < aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_lines'), +"__lt_eq", smalltalk.method({ -selector: unescape('lines'), -fn: function () { +selector: "<=", +fn: function (aString){ 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 String(self) <= aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_lineNumber_'), +"__eq", smalltalk.method({ -selector: unescape('lineNumber%3A'), -fn: function (anIndex) { +selector: "=", +fn: function (aString){ 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}})})(); +var $early={}; +try{((($receiver = smalltalk.send(smalltalk.send(aString, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})])); +return String(self) === String(aString); return self; -} catch(e) {if(e.name === 'stReturn' && e.selector === '_lineNumber_'){return e.fn()} throw(e)}} +} catch(e) {if(e===$early)return e[0]; throw e}} }), smalltalk.String); smalltalk.addMethod( -unescape('_reversed'), +"__eq_eq", smalltalk.method({ -selector: unescape('reversed'), -fn: function () { +selector: "==", +fn: function (aString){ var self=this; -return self.split("").reverse().join(""); +return smalltalk.send(self, "__eq", [aString]); return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_asJavaScriptSelector'), +"__gt", smalltalk.method({ -selector: unescape('asJavaScriptSelector'), -fn: function () { +selector: ">", +fn: function (aString){ var self=this; -return smalltalk.send(smalltalk.send(smalltalk.send(self, "_asSelector", []), "_replace_with_", [unescape("%5E_"), ""]), "_replace_with_", [unescape("_.*"), ""]); +return String(self) > aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_asSymbol'), +"__gt_eq", smalltalk.method({ -selector: unescape('asSymbol'), -fn: function () { +selector: ">=", +fn: function (aString){ var self=this; -return smalltalk.send((smalltalk.Symbol || Symbol), "_lookup_", [self]); +return String(self) >= aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( -unescape('_asJSON'), +"_asJSON", smalltalk.method({ -selector: unescape('asJSON'), +selector: "asJSON", fn: function (){ var self=this; return self; return self;} }), smalltalk.String); - smalltalk.addMethod( -unescape('_streamClass'), +"_asJavaScriptSelector", smalltalk.method({ -selector: unescape('streamClass'), -fn: function () { +selector: "asJavaScriptSelector", +fn: function (){ var self=this; -return (smalltalk.StringStream || StringStream); +return smalltalk.send(smalltalk.send(smalltalk.send(self, "_asSelector", []), "_replace_with_", ["^_", ""]), "_replace_with_", ["_.*", ""]); return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_fromString_'), +"_asJavascript", smalltalk.method({ -selector: unescape('fromString%3A'), -fn: function (aString) { +selector: "asJavascript", +fn: function (){ var self=this; -return new self.fn(aString); -return self;} -}), -smalltalk.String.klass); -smalltalk.addMethod( -unescape('_cr'), -smalltalk.method({ -selector: unescape('cr'), -fn: function () { -var self=this; -return '\r'; + if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1) + return "\"" + self.replace(/[\x00-\x1f"\\\x7f-\x9f]/g, function(ch){var c=ch.charCodeAt(0);return "\\x"+("0"+c.toString(16)).slice(-2)}) + "\""; + else + return "\"" + self + "\""; + ; return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_lf'), +"_asLowercase", smalltalk.method({ -selector: unescape('lf'), -fn: function () { +selector: "asLowercase", +fn: function (){ var self=this; -return '\n'; +return self.toLowerCase(); return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_space'), +"_asNumber", smalltalk.method({ -selector: unescape('space'), -fn: function () { +selector: "asNumber", +fn: function (){ var self=this; -return ' '; +return Number(self); return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_tab'), +"_asSelector", smalltalk.method({ -selector: unescape('tab'), -fn: function () { +selector: "asSelector", +fn: function (){ var self=this; -return '\t'; +var selector=nil; +(selector=smalltalk.send("_", "__comma", [self])); +(selector=smalltalk.send(selector, "_replace_with_", [":", "_"])); +(selector=smalltalk.send(selector, "_replace_with_", ["[+]", "_plus"])); +(selector=smalltalk.send(selector, "_replace_with_", ["-", "_minus"])); +(selector=smalltalk.send(selector, "_replace_with_", ["[*]", "_star"])); +(selector=smalltalk.send(selector, "_replace_with_", ["[/]", "_slash"])); +(selector=smalltalk.send(selector, "_replace_with_", [">", "_gt"])); +(selector=smalltalk.send(selector, "_replace_with_", ["<", "_lt"])); +(selector=smalltalk.send(selector, "_replace_with_", ["=", "_eq"])); +(selector=smalltalk.send(selector, "_replace_with_", [",", "_comma"])); +(selector=smalltalk.send(selector, "_replace_with_", ["[@]", "_at"])); +return selector; return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_crlf'), +"_asString", smalltalk.method({ -selector: unescape('crlf'), -fn: function () { +selector: "asString", +fn: function (){ var self=this; -return '\r\n'; +return self; return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_streamContents_'), +"_asSymbol", smalltalk.method({ -selector: unescape('streamContents%3A'), -fn: function (blockWithArg) { +selector: "asSymbol", +fn: function (){ 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 smalltalk.send((smalltalk.Symbol || Symbol), "_lookup_", [self]); return self;} }), -smalltalk.String.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_value_'), +"_asUppercase", smalltalk.method({ -selector: unescape('value%3A'), -fn: function (aUTFCharCode) { +selector: "asUppercase", +fn: function (){ var self=this; -return String.fromCharCode(aUTFCharCode);; +return self.toUpperCase(); return self;} }), -smalltalk.String.klass); +smalltalk.String); - -smalltalk.addClass('Symbol', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_asciiValue", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (anIndex, aBlock) { +selector: "asciiValue", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_at_ifAbsent_", [anIndex, aBlock]); +return self.charCodeAt(0);; return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_asString'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('asString'), -fn: function () { +selector: "at:ifAbsent:", +fn: function (anIndex, aBlock){ var self=this; -return self.value; +return self[anIndex - 1] || aBlock(); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_printString'), +"_copyFrom_to_", smalltalk.method({ -selector: unescape('printString'), -fn: function () { +selector: "copyFrom:to:", +fn: function (anIndex, anotherIndex){ var self=this; -return smalltalk.send(unescape("%23"), "__comma", [smalltalk.send(self, "_asString", [])]); +return self.substring(anIndex - 1, anotherIndex); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_size'), +"_deepCopy", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "deepCopy", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_size", []); +return smalltalk.send(self, "_shallowCopy", []); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_asSymbol'), +"_escaped", smalltalk.method({ -selector: unescape('asSymbol'), -fn: function () { +selector: "escaped", +fn: function (){ var self=this; -return self; +return escape(self); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_copyFrom_to_'), +"_includesSubString_", smalltalk.method({ -selector: unescape('copyFrom%3Ato%3A'), -fn: function (anIndex, anotherIndex) { +selector: "includesSubString:", +fn: function (subString){ var self=this; -return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_copyFrom_to_", [anIndex, anotherIndex])]); + return self.indexOf(subString) != -1 ; return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_deepCopy'), +"_isString", smalltalk.method({ -selector: unescape('deepCopy'), -fn: function () { +selector: "isString", +fn: function (){ var self=this; -return self; +return true; return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('__lt'), +"_join_", smalltalk.method({ -selector: unescape('%3C'), -fn: function (aSymbol) { +selector: "join:", +fn: function (aCollection){ 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 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;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('__lt_eq'), +"_lineIndicesDo_", smalltalk.method({ -selector: unescape('%3C%3D'), -fn: function (aSymbol) { +selector: "lineIndicesDo:", +fn: function (aBlock){ 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;} +var $early={}; +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 $early=[self]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw $early=[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===$early)return e[0]; throw e}} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('__gt_eq'), +"_lineNumber_", smalltalk.method({ -selector: unescape('%3E%3D'), -fn: function (aSymbol) { +selector: "lineNumber:", +fn: function (anIndex){ 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;} -}), -smalltalk.Symbol); - -smalltalk.addMethod( -unescape('__eq'), -smalltalk.method({ -selector: unescape('%3D'), -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", [])])}})})(); +var $early={}; +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 $early=[smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return (function(){throw $early=[smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]})();})]));})]); +return nil; return self; -} catch(e) {if(e.name === 'stReturn' && e.selector === '__eq'){return e.fn()} throw(e)}} +} catch(e) {if(e===$early)return e[0]; throw e}} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_isSymbol'), +"_lines", smalltalk.method({ -selector: unescape('isSymbol'), -fn: function () { +selector: "lines", +fn: function (){ var self=this; -return true; +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;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_asJavascript'), +"_linesDo_", smalltalk.method({ -selector: unescape('asJavascript'), -fn: function () { +selector: "linesDo:", +fn: function (aBlock){ var self=this; -return smalltalk.send(smalltalk.send(unescape("smalltalk.symbolFor%28%22"), "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", [unescape("%22%29")]); +smalltalk.send(self, "_lineIndicesDo_", [(function(start, endWithoutDelimiters, end){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_copyFrom_to_", [start, endWithoutDelimiters])]);})]); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('__gt'), +"_match_", smalltalk.method({ -selector: unescape('%3E'), -fn: function (aSymbol) { +selector: "match:", +fn: function (aRegexp){ 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.search(aRegexp) != -1; return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_shallowCopy'), +"_matchesOf_", smalltalk.method({ -selector: unescape('shallowCopy'), -fn: function () { +selector: "matchesOf:", +fn: function (aRegularExpression){ var self=this; -return self; +return self.match(aRegularExpression); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_asSelector'), +"_printNl", smalltalk.method({ -selector: unescape('asSelector'), -fn: function () { +selector: "printNl", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_asSelector", []); +console.log(self); return self;} }), -smalltalk.Symbol); +smalltalk.String); smalltalk.addMethod( -unescape('_asJSON'), +"_printString", smalltalk.method({ -selector: unescape('asJSON'), +selector: "printString", fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asString", []), "_asJSON", []); +return smalltalk.send(smalltalk.send("'", "__comma", [self]), "__comma", ["'"]); return self;} }), -smalltalk.Symbol); +smalltalk.String); - smalltalk.addMethod( -unescape('_lookup_'), +"_replace_with_", smalltalk.method({ -selector: unescape('lookup%3A'), -fn: function (aString) { +selector: "replace:with:", +fn: function (aString, anotherString){ var self=this; -return smalltalk.symbolFor(aString);; +return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [aString, "g"]), anotherString]); return self;} }), -smalltalk.Symbol.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_basicNew'), +"_replaceRegexp_with_", smalltalk.method({ -selector: unescape('basicNew'), -fn: function () { +selector: "replaceRegexp:with:", +fn: function (aRegexp, aString){ var self=this; -smalltalk.send(self, "_shouldNotImplement", []); +return self.replace(aRegexp, aString); return self;} }), -smalltalk.Symbol.klass); +smalltalk.String); smalltalk.addMethod( -unescape('_fromString_'), +"_reversed", smalltalk.method({ -selector: unescape('fromString%3A'), -fn: function (aString) { +selector: "reversed", +fn: function (){ var self=this; -return smalltalk.send(self, "_lookup_", [aString]); +return self.split("").reverse().join(""); return self;} }), -smalltalk.Symbol.klass); +smalltalk.String); - -smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_size'), +"_shallowCopy", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "shallowCopy", +fn: function (){ var self=this; -return self.length; +return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [self]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_at_put_'), +"_size", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (anIndex, anObject) { +selector: "size", +fn: function (){ var self=this; -return self[anIndex - 1] = anObject; +return self.length; return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_tokenize_", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (anIndex, aBlock) { +selector: "tokenize:", +fn: function (aString){ var self=this; - - var value = self[anIndex - 1]; - if(value === undefined) { - return aBlock(); - } else { - return value; - } - ; +return self.split(aString); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_add_'), +"_trimBoth", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anObject) { +selector: "trimBoth", +fn: function (){ var self=this; -self.push(anObject); return anObject;; +return smalltalk.send(self, "_trimBoth_", ["\x5cs"]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_join_'), +"_trimBoth_", smalltalk.method({ -selector: unescape('join%3A'), -fn: function (aString) { +selector: "trimBoth:", +fn: function (separators){ var self=this; -return self.join(aString); +return smalltalk.send(smalltalk.send(self, "_trimLeft_", [separators]), "_trimRight_", [separators]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_asJavascript'), +"_trimLeft", smalltalk.method({ -selector: unescape('asJavascript'), -fn: function () { +selector: "trimLeft", +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 smalltalk.send(self, "_trimLeft_", ["\x5cs"]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_sort'), +"_trimLeft_", smalltalk.method({ -selector: unescape('sort'), -fn: function () { +selector: "trimLeft:", +fn: function (separators){ var self=this; -return smalltalk.send(self, "_basicPerform_", ["sort"]); +return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send("^[", "__comma", [separators]), "__comma", ["]+"]), "g"]), ""]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_sort_'), +"_trimRight", smalltalk.method({ -selector: unescape('sort%3A'), -fn: function (aBlock) { +selector: "trimRight", +fn: function (){ var self=this; - - return self.sort(function(a, b) { - if(aBlock(a,b)) {return -1} else {return 1} - }) - ; +return smalltalk.send(self, "_trimRight_", ["\x5cs"]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_remove_'), +"_trimRight_", smalltalk.method({ -selector: unescape('remove%3A'), -fn: function (anObject) { +selector: "trimRight:", +fn: function (separators){ var self=this; - - for(var i=0;i<self.length;i++) { - if(self[i] == anObject) { - self.splice(i,1); - break; - } - } - ; +return smalltalk.send(self, "_replaceRegexp_with_", [smalltalk.send((smalltalk.RegularExpression || RegularExpression), "_fromString_flag_", [smalltalk.send(smalltalk.send("[", "__comma", [separators]), "__comma", ["]+$"]), "g"]), ""]); return self;} }), -smalltalk.Array); +smalltalk.String); smalltalk.addMethod( -unescape('_sorted'), +"_unescaped", smalltalk.method({ -selector: unescape('sorted'), -fn: function () { +selector: "unescaped", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []); +return unescape(self); return self;} }), -smalltalk.Array); +smalltalk.String); -smalltalk.addMethod( -unescape('_sorted_'), -smalltalk.method({ -selector: unescape('sorted%3A'), -fn: function (aBlock) { -var self=this; -return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]); -return self;} -}), -smalltalk.Array); smalltalk.addMethod( -unescape('_removeFrom_to_'), +"_cr", smalltalk.method({ -selector: unescape('removeFrom%3Ato%3A'), -fn: function (aNumber, anotherNumber) { +selector: "cr", +fn: function (){ var self=this; -self.splice(aNumber - 1,anotherNumber - 1); +return '\r'; return self;} }), -smalltalk.Array); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_reversed'), +"_crlf", smalltalk.method({ -selector: unescape('reversed'), -fn: function () { +selector: "crlf", +fn: function (){ var self=this; -return self._copy().reverse(); +return '\r\n'; return self;} }), -smalltalk.Array); +smalltalk.String.klass); - smalltalk.addMethod( -unescape('_new_'), +"_fromString_", smalltalk.method({ -selector: unescape('new%3A'), -fn: function (anInteger) { +selector: "fromString:", +fn: function (aString){ var self=this; -return new Array(anInteger); +return new self.fn(aString); return self;} }), -smalltalk.Array.klass); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_with_'), +"_lf", smalltalk.method({ -selector: unescape('with%3A'), -fn: function (anObject) { +selector: "lf", +fn: function (){ var self=this; -return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(1)])); +return '\n'; return self;} }), -smalltalk.Array.klass); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_with_with_'), +"_space", smalltalk.method({ -selector: unescape('with%3Awith%3A'), -fn: function (anObject, anObject2) { +selector: "space", +fn: function (){ 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 ' '; return self;} }), -smalltalk.Array.klass); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_with_with_with_'), +"_streamClass", smalltalk.method({ -selector: unescape('with%3Awith%3Awith%3A'), -fn: function (anObject, anObject2, anObject3) { +selector: "streamClass", +fn: function (){ 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 (smalltalk.StringStream || StringStream); return self;} }), -smalltalk.Array.klass); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_withAll_'), +"_streamContents_", smalltalk.method({ -selector: unescape('withAll%3A'), -fn: function (aCollection) { +selector: "streamContents:", +fn: function (blockWithArg){ 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; +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;} }), -smalltalk.Array.klass); +smalltalk.String.klass); - -smalltalk.addClass('Array', smalltalk.SequenceableCollection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_size'), +"_tab", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "tab", +fn: function (){ var self=this; -return self.length; +return '\t'; return self;} }), -smalltalk.Array); +smalltalk.String.klass); smalltalk.addMethod( -unescape('_at_put_'), +"_value_", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (anIndex, anObject) { +selector: "value:", +fn: function (aUTFCharCode){ var self=this; -return self[anIndex - 1] = anObject; +return String.fromCharCode(aUTFCharCode);; return self;} }), -smalltalk.Array); +smalltalk.String.klass); -smalltalk.addMethod( -unescape('_at_ifAbsent_'), -smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (anIndex, aBlock) { -var self=this; - var value = self[anIndex - 1]; - if(value === undefined) { - return aBlock(); - } else { - return value; - } - ; -return self;} -}), -smalltalk.Array); - +smalltalk.addClass('Symbol', smalltalk.CharacterArray, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_add_'), +"__lt", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anObject) { +selector: "<", +fn: function (aSymbol){ var self=this; -self.push(anObject); return anObject;; +return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver <smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__lt", [smalltalk.send(aSymbol, "_asString", [])])); return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_join_'), +"__lt_eq", smalltalk.method({ -selector: unescape('join%3A'), -fn: function (aString) { +selector: "<=", +fn: function (aSymbol){ var self=this; -return self.join(aString); +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;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_asJavascript'), +"__eq", smalltalk.method({ -selector: unescape('asJavascript'), -fn: function () { +selector: "=", +fn: function (aSymbol){ 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;} +var $early={}; +try{((($receiver = smalltalk.send(smalltalk.send(aSymbol, "_class", []), "__eq", [smalltalk.send(self, "_class", [])])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (function(){throw $early=[false]})();})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (function(){throw $early=[false]})();})])); +return smalltalk.send(smalltalk.send(self, "_asString", []), "__eq", [smalltalk.send(aSymbol, "_asString", [])]); +return self; +} catch(e) {if(e===$early)return e[0]; throw e}} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_sort'), +"__gt", smalltalk.method({ -selector: unescape('sort'), -fn: function () { +selector: ">", +fn: function (aSymbol){ var self=this; -return smalltalk.send(self, "_basicPerform_", ["sort"]); +return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt", [smalltalk.send(aSymbol, "_asString", [])])); return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_sort_'), +"__gt_eq", smalltalk.method({ -selector: unescape('sort%3A'), -fn: function (aBlock) { +selector: ">=", +fn: function (aSymbol){ var self=this; - - return self.sort(function(a, b) { - if(aBlock(a,b)) {return -1} else {return 1} - }) - ; +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;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_remove_'), +"_asJSON", smalltalk.method({ -selector: unescape('remove%3A'), -fn: function (anObject) { +selector: "asJSON", +fn: function (){ var self=this; - - for(var i=0;i<self.length;i++) { - if(self[i] == anObject) { - self.splice(i,1); - break; - } - } - ; +return smalltalk.send(smalltalk.send(self, "_asString", []), "_asJSON", []); return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_sorted'), +"_asJavascript", smalltalk.method({ -selector: unescape('sorted'), -fn: function () { +selector: "asJavascript", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort", []); +return smalltalk.send(smalltalk.send("smalltalk.symbolFor(\x22", "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", ["\x22)"]); return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_sorted_'), +"_asSelector", smalltalk.method({ -selector: unescape('sorted%3A'), -fn: function (aBlock) { +selector: "asSelector", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_copy", []), "_sort_", [aBlock]); +return smalltalk.send(smalltalk.send(self, "_asString", []), "_asSelector", []); return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_removeFrom_to_'), +"_asString", smalltalk.method({ -selector: unescape('removeFrom%3Ato%3A'), -fn: function (aNumber, anotherNumber) { +selector: "asString", +fn: function (){ var self=this; -self.splice(aNumber - 1,anotherNumber - 1); +return self.value; return self;} }), -smalltalk.Array); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_reversed'), +"_asSymbol", smalltalk.method({ -selector: unescape('reversed'), -fn: function () { +selector: "asSymbol", +fn: function (){ var self=this; -return self._copy().reverse(); +return self; return self;} }), -smalltalk.Array); +smalltalk.Symbol); - smalltalk.addMethod( -unescape('_new_'), +"_at_ifAbsent_", smalltalk.method({ -selector: unescape('new%3A'), -fn: function (anInteger) { +selector: "at:ifAbsent:", +fn: function (anIndex, aBlock){ var self=this; -return new Array(anInteger); +return smalltalk.send(smalltalk.send(self, "_asString", []), "_at_ifAbsent_", [anIndex, aBlock]); return self;} }), -smalltalk.Array.klass); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_with_'), +"_copyFrom_to_", smalltalk.method({ -selector: unescape('with%3A'), -fn: function (anObject) { +selector: "copyFrom:to:", +fn: function (anIndex, anotherIndex){ var self=this; -return (function($rec){smalltalk.send($rec, "_at_put_", [(1), anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new_", [(1)])); +return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_copyFrom_to_", [anIndex, anotherIndex])]); return self;} }), -smalltalk.Array.klass); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_with_with_'), +"_deepCopy", smalltalk.method({ -selector: unescape('with%3Awith%3A'), -fn: function (anObject, anObject2) { +selector: "deepCopy", +fn: function (){ 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; return self;} }), -smalltalk.Array.klass); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_with_with_with_'), +"_isSymbol", smalltalk.method({ -selector: unescape('with%3Awith%3Awith%3A'), -fn: function (anObject, anObject2, anObject3) { +selector: "isSymbol", +fn: function (){ 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 true; return self;} }), -smalltalk.Array.klass); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_withAll_'), +"_printString", smalltalk.method({ -selector: unescape('withAll%3A'), -fn: function (aCollection) { +selector: "printString", +fn: function (){ 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 smalltalk.send("#", "__comma", [smalltalk.send(self, "_asString", [])]); return self;} }), -smalltalk.Array.klass); +smalltalk.Symbol); - -smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_next_'), +"_shallowCopy", smalltalk.method({ -selector: unescape('next%3A'), -fn: function (anInteger) { +selector: "shallowCopy", +fn: function (){ 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; return self;} }), -smalltalk.StringStream); +smalltalk.Symbol); smalltalk.addMethod( -unescape('_nextPut_'), +"_size", smalltalk.method({ -selector: unescape('nextPut%3A'), -fn: function (aString) { +selector: "size", +fn: function (){ var self=this; -smalltalk.send(self, "_nextPutAll_", [aString]); +return smalltalk.send(smalltalk.send(self, "_asString", []), "_size", []); return self;} }), -smalltalk.StringStream); +smalltalk.Symbol); -smalltalk.addMethod( -unescape('_nextPutAll_'), -smalltalk.method({ -selector: unescape('nextPutAll%3A'), -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;} -}), -smalltalk.StringStream); smalltalk.addMethod( -unescape('_cr'), +"_basicNew", smalltalk.method({ -selector: unescape('cr'), -fn: function () { +selector: "basicNew", +fn: function (){ var self=this; -return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_cr", [])]); +smalltalk.send(self, "_shouldNotImplement", []); return self;} }), -smalltalk.StringStream); +smalltalk.Symbol.klass); smalltalk.addMethod( -unescape('_crlf'), +"_fromString_", smalltalk.method({ -selector: unescape('crlf'), -fn: function () { +selector: "fromString:", +fn: function (aString){ var self=this; -return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_crlf", [])]); +return smalltalk.send(self, "_lookup_", [aString]); return self;} }), -smalltalk.StringStream); +smalltalk.Symbol.klass); smalltalk.addMethod( -unescape('_lf'), +"_lookup_", smalltalk.method({ -selector: unescape('lf'), -fn: function () { +selector: "lookup:", +fn: function (aString){ var self=this; -return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_lf", [])]); +return smalltalk.symbolFor(aString);; return self;} }), -smalltalk.StringStream); +smalltalk.Symbol.klass); + +smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_space'), +"__eq", smalltalk.method({ -selector: unescape('space'), -fn: function () { +selector: "=", +fn: function (aCollection){ var self=this; -smalltalk.send(self, "_nextPut_", [" "]); +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;} }), -smalltalk.StringStream); +smalltalk.Set); - - -smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_add_'), +"_add_", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anObject) { +selector: "add:", +fn: function (anObject){ var self=this; var found; for(var i=0; i < self['@elements'].length; i++) { if(anObject == self['@elements'][i]) { @@ -2678,643 +2611,514 @@ return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_remove_'), +"_asArray", smalltalk.method({ -selector: unescape('remove%3A'), -fn: function (anObject) { +selector: "asArray", +fn: function (){ var self=this; -smalltalk.send(self['@elements'], "_remove_", [anObject]); +return smalltalk.send(self['@elements'], "_copy", []); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_initialize'), +"_detect_ifNone_", smalltalk.method({ -selector: unescape('initialize'), -fn: function () { +selector: "detect:ifNone:", +fn: function (aBlock, anotherBlock){ var self=this; -smalltalk.send(self, "_initialize", [], smalltalk.Collection); -(self['@elements']=[]); +return smalltalk.send(self['@elements'], "_detect_ifNone_", [aBlock, anotherBlock]); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_size'), +"_do_", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "do:", +fn: function (aBlock){ var self=this; -return smalltalk.send(self['@elements'], "_size", []); +smalltalk.send(self['@elements'], "_do_", [aBlock]); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_asArray'), +"_includes_", smalltalk.method({ -selector: unescape('asArray'), -fn: function () { +selector: "includes:", +fn: function (anObject){ var self=this; -return smalltalk.send(self['@elements'], "_copy", []); +return smalltalk.send(self['@elements'], "_includes_", [anObject]); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_detect_ifNone_'), +"_initialize", smalltalk.method({ -selector: unescape('detect%3AifNone%3A'), -fn: function (aBlock, anotherBlock) { +selector: "initialize", +fn: function (){ var self=this; -return smalltalk.send(self['@elements'], "_detect_ifNone_", [aBlock, anotherBlock]); +smalltalk.send(self, "_initialize", [], smalltalk.Set.superclass || nil); +(self['@elements']=[]); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_do_'), +"_remove_", smalltalk.method({ -selector: unescape('do%3A'), -fn: function (aBlock) { +selector: "remove:", +fn: function (anObject){ var self=this; -smalltalk.send(self['@elements'], "_do_", [aBlock]); +smalltalk.send(self['@elements'], "_remove_", [anObject]); return self;} }), smalltalk.Set); smalltalk.addMethod( -unescape('_includes_'), +"_select_", smalltalk.method({ -selector: unescape('includes%3A'), -fn: function (anObject) { +selector: "select:", +fn: function (aBlock){ var self=this; -return smalltalk.send(self['@elements'], "_includes_", [anObject]); -return self;} -}), -smalltalk.Set); - -smalltalk.addMethod( -unescape('__eq'), -smalltalk.method({ -selector: unescape('%3D'), -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;} -}), -smalltalk.Set); - -smalltalk.addMethod( -unescape('_select_'), -smalltalk.method({ -selector: unescape('select%3A'), -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;} }), smalltalk.Set); - - -smalltalk.addClass('HashedCollection', smalltalk.Collection, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_size'), +"_size", smalltalk.method({ -selector: unescape('size'), -fn: function () { +selector: "size", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_keys", []), "_size", []); +return smalltalk.send(self['@elements'], "_size", []); return self;} }), -smalltalk.HashedCollection); +smalltalk.Set); -smalltalk.addMethod( -unescape('_associations'), -smalltalk.method({ -selector: unescape('associations'), -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;} -}), -smalltalk.HashedCollection); -smalltalk.addMethod( -unescape('_keys'), -smalltalk.method({ -selector: unescape('keys'), -fn: function () { -var self=this; - var keys = []; - for(var i in self) { - if(self.hasOwnProperty(i)) { - keys.push(i); - } - }; - return keys; - ; -return self;} -}), -smalltalk.HashedCollection); - +smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_values'), +"_compile_", smalltalk.method({ -selector: unescape('values'), -fn: function () { +selector: "compile:", +fn: function (aString){ var self=this; -return smalltalk.send(smalltalk.send(self, "_keys", []), "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]); +return self.compile(aString); return self;} }), -smalltalk.HashedCollection); +smalltalk.RegularExpression); smalltalk.addMethod( -unescape('_at_put_'), +"_exec_", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (aKey, aValue) { +selector: "exec:", +fn: function (aString){ var self=this; -return smalltalk.send(self, "_basicAt_put_", [aKey, aValue]); +return self.exec(aString) || nil; return self;} }), -smalltalk.HashedCollection); +smalltalk.RegularExpression); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_test_", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (aKey, aBlock) { +selector: "test:", +fn: function (aString){ var self=this; -return smalltalk.send(smalltalk.send(self, "_includesKey_", [aKey]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_basicAt_", [aKey]);}), aBlock]); +return self.test(aString); return self;} }), -smalltalk.HashedCollection); +smalltalk.RegularExpression); -smalltalk.addMethod( -unescape('_at_ifAbsentPut_'), -smalltalk.method({ -selector: unescape('at%3AifAbsentPut%3A'), -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;} -}), -smalltalk.HashedCollection); smalltalk.addMethod( -unescape('_at_ifPresent_'), +"_fromString_", smalltalk.method({ -selector: unescape('at%3AifPresent%3A'), -fn: function (aKey, aBlock) { +selector: "fromString:", +fn: function (aString){ 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 smalltalk.send(self, "_fromString_flag_", [aString, ""]); return self;} }), -smalltalk.HashedCollection); +smalltalk.RegularExpression.klass); smalltalk.addMethod( -unescape('_at_ifPresent_ifAbsent_'), +"_fromString_flag_", smalltalk.method({ -selector: unescape('at%3AifPresent%3AifAbsent%3A'), -fn: function (aKey, aBlock, anotherBlock) { +selector: "fromString:flag:", +fn: function (aString, anotherString){ 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 new RegExp(aString, anotherString); return self;} }), -smalltalk.HashedCollection); +smalltalk.RegularExpression.klass); + +smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_at_'), +"_atEnd", smalltalk.method({ -selector: unescape('at%3A'), -fn: function (aKey) { +selector: "atEnd", +fn: function (){ var self=this; -return smalltalk.send(self, "_at_ifAbsent_", [aKey, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); +return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_add_'), +"_atStart", smalltalk.method({ -selector: unescape('add%3A'), -fn: function (anAssociation) { +selector: "atStart", +fn: function (){ var self=this; -smalltalk.send(self, "_at_put_", [smalltalk.send(anAssociation, "_key", []), smalltalk.send(anAssociation, "_value", [])]); +return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_addAll_'), +"_close", smalltalk.method({ -selector: unescape('addAll%3A'), -fn: function (aHashedCollection) { +selector: "close", +fn: function (){ var self=this; -smalltalk.send(self, "_addAll_", [smalltalk.send(aHashedCollection, "_associations", [])], smalltalk.Collection); -return aHashedCollection; + return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_removeKey_'), +"_collection", smalltalk.method({ -selector: unescape('removeKey%3A'), -fn: function (aKey) { +selector: "collection", +fn: function (){ var self=this; -smalltalk.send(self, "_remove_", [aKey]); +return self['@collection']; return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_remove_ifAbsent_'), +"_contents", smalltalk.method({ -selector: unescape('remove%3AifAbsent%3A'), -fn: function (aKey, aBlock) { +selector: "contents", +fn: function (){ var self=this; -return smalltalk.send(self, "_removeKey_ifAbsent_", [aKey, aBlock]); +return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_removeKey_ifAbsent_'), +"_do_", smalltalk.method({ -selector: unescape('removeKey%3AifAbsent%3A'), -fn: function (aKey, aBlock) { +selector: "do:", +fn: function (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]);})])); +(function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})(); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('__eq'), +"_flush", smalltalk.method({ -selector: unescape('%3D'), -fn: function (aHashedCollection) { +selector: "flush", +fn: function (){ 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)}} -}), -smalltalk.HashedCollection); -smalltalk.addMethod( -unescape('_shallowCopy'), -smalltalk.method({ -selector: unescape('shallowCopy'), -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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('__comma'), +"_isEmpty", smalltalk.method({ -selector: unescape('%2C'), -fn: function (aCollection) { +selector: "isEmpty", +fn: function (){ var self=this; -smalltalk.send(self, "_shouldNotImplement", []); +return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_copyFrom_to_'), +"_next", smalltalk.method({ -selector: unescape('copyFrom%3Ato%3A'), -fn: function (anIndex, anotherIndex) { +selector: "next", +fn: function (){ var self=this; -smalltalk.send(self, "_shouldNotImplement", []); +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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_deepCopy'), +"_next_", smalltalk.method({ -selector: unescape('deepCopy'), -fn: function () { +selector: "next:", +fn: function (anInteger){ 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; +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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_associationsDo_'), +"_nextPut_", smalltalk.method({ -selector: unescape('associationsDo%3A'), -fn: function (aBlock) { +selector: "nextPut:", +fn: function (anObject){ var self=this; -smalltalk.send(smalltalk.send(self, "_associations", []), "_do_", [aBlock]); +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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_keysAndValuesDo_'), +"_nextPutAll_", smalltalk.method({ -selector: unescape('keysAndValuesDo%3A'), -fn: function (aBlock) { +selector: "nextPutAll:", +fn: function (aCollection){ var self=this; -smalltalk.send(self, "_associationsDo_", [(function(each){return smalltalk.send(aBlock, "_value_value_", [smalltalk.send(each, "_key", []), smalltalk.send(each, "_value", [])]);})]); +smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_do_'), +"_peek", smalltalk.method({ -selector: unescape('do%3A'), -fn: function (aBlock) { +selector: "peek", +fn: function (){ var self=this; -smalltalk.send(smalltalk.send(self, "_values", []), "_do_", [aBlock]); +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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_select_'), +"_position", smalltalk.method({ -selector: unescape('select%3A'), -fn: function (aBlock) { +selector: "position", +fn: function (){ 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 (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return (self['@position']=(0));})() : $receiver; return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_collect_'), +"_position_", smalltalk.method({ -selector: unescape('collect%3A'), -fn: function (aBlock) { +selector: "position:", +fn: function (anInteger){ 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; +(self['@position']=anInteger); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_detect_ifNone_'), +"_reset", smalltalk.method({ -selector: unescape('detect%3AifNone%3A'), -fn: function (aBlock, anotherBlock) { +selector: "reset", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_values", []), "_detect_ifNone_", [aBlock, anotherBlock]); +smalltalk.send(self, "_position_", [(0)]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_includes_'), +"_resetContents", smalltalk.method({ -selector: unescape('includes%3A'), -fn: function (anObject) { +selector: "resetContents", +fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_values", []), "_includes_", [anObject]); +smalltalk.send(self, "_reset", []); +smalltalk.send(self, "_setStreamSize_", [(0)]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_printString'), +"_setCollection_", smalltalk.method({ -selector: unescape('printString'), -fn: function () { +selector: "setCollection:", +fn: function (aCollection){ 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")]);})]); +(self['@collection']=aCollection); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_storeOn_'), +"_setStreamSize_", smalltalk.method({ -selector: unescape('storeOn%3A'), -fn: function (aStream) { +selector: "setStreamSize:", +fn: function (anInteger){ 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")]); +(self['@streamSize']=anInteger); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_includesKey_'), +"_setToEnd", smalltalk.method({ -selector: unescape('includesKey%3A'), -fn: function (aKey) { +selector: "setToEnd", +fn: function (){ var self=this; -return self.hasOwnProperty(aKey); +smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_asDictionary'), +"_size", smalltalk.method({ -selector: unescape('asDictionary'), -fn: function () { +selector: "size", +fn: function (){ var self=this; -return smalltalk.send((smalltalk.Dictionary || Dictionary), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); +return smalltalk.send(self, "_streamSize", []); return self;} }), -smalltalk.HashedCollection); +smalltalk.Stream); smalltalk.addMethod( -unescape('_asJSON'), +"_skip_", smalltalk.method({ -selector: unescape('asJSON'), -fn: function (){ +selector: "skip:", +fn: function (anInteger){ var self=this; -var c=nil; -(c=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); -smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return smalltalk.send(c, "_at_put_", [key, smalltalk.send(value, "_asJSON", [])]);})]); -return c; +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;} }), -smalltalk.HashedCollection); +smalltalk.Stream); - smalltalk.addMethod( -unescape('_fromPairs_'), +"_streamSize", smalltalk.method({ -selector: unescape('fromPairs%3A'), -fn: function (aCollection) { +selector: "streamSize", +fn: function (){ 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['@streamSize']; return self;} }), -smalltalk.HashedCollection.klass); +smalltalk.Stream); -smalltalk.addClass('Dictionary', smalltalk.HashedCollection, ['keys', 'values'], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_at_ifAbsent_'), +"_on_", smalltalk.method({ -selector: unescape('at%3AifAbsent%3A'), -fn: function (aKey, aBlock) { +selector: "on:", +fn: function (aCollection){ 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 (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;} }), -smalltalk.Dictionary); +smalltalk.Stream.klass); -smalltalk.addMethod( -unescape('_keys'), -smalltalk.method({ -selector: unescape('keys'), -fn: function () { -var self=this; -return smalltalk.send(self['@keys'], "_copy", []); -return self;} -}), -smalltalk.Dictionary); +smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel-Collections'); smalltalk.addMethod( -unescape('_values'), +"_cr", smalltalk.method({ -selector: unescape('values'), -fn: function () { +selector: "cr", +fn: function (){ var self=this; -return smalltalk.send(self['@values'], "_copy", []); +return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_cr", [])]); return self;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_at_put_'), +"_crlf", smalltalk.method({ -selector: unescape('at%3Aput%3A'), -fn: function (aKey, aValue) { +selector: "crlf", +fn: function (){ 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 smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_crlf", [])]); return self;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_removeKey_ifAbsent_'), +"_lf", smalltalk.method({ -selector: unescape('removeKey%3AifAbsent%3A'), -fn: function (aKey, aBlock) { +selector: "lf", +fn: function (){ 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 smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_lf", [])]); return self;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_initialize'), +"_next_", smalltalk.method({ -selector: unescape('initialize'), -fn: function () { +selector: "next:", +fn: function (anInteger){ var self=this; -smalltalk.send(self, "_initialize", [], smalltalk.HashedCollection); -(self['@keys']=[]); -(self['@values']=[]); +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;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_includesKey_'), +"_nextPut_", smalltalk.method({ -selector: unescape('includesKey%3A'), -fn: function (aKey) { +selector: "nextPut:", +fn: function (aString){ var self=this; -return smalltalk.send(self['@keys'], "_includes_", [aKey]); +smalltalk.send(self, "_nextPutAll_", [aString]); return self;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_asHashedCollection'), +"_nextPutAll_", smalltalk.method({ -selector: unescape('asHashedCollection'), -fn: function () { +selector: "nextPutAll:", +fn: function (aString){ var self=this; -return smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); +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;} }), -smalltalk.Dictionary); +smalltalk.StringStream); smalltalk.addMethod( -unescape('_asJSON'), +"_space", smalltalk.method({ -selector: unescape('asJSON'), +selector: "space", fn: function (){ var self=this; -return smalltalk.send(smalltalk.send(self, "_asHashedCollection", []), "_asJSON", []); +smalltalk.send(self, "_nextPut_", [" "]); return self;} }), -smalltalk.Dictionary); +smalltalk.StringStream);