smalltalk.addPackage('Kernel-Collections', {}); smalltalk.addClass('Association', smalltalk.Object, ['key', 'value'], 'Kernel-Collections'); smalltalk.addMethod( "__eq", smalltalk.method({ 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( "_key", smalltalk.method({ selector: "key", fn: function () { var self=this; return self['@key']; return self;} }), smalltalk.Association); smalltalk.addMethod( "_key_", smalltalk.method({ selector: "key:", fn: function (aKey) { var self=this; (self['@key']=aKey); return self;} }), smalltalk.Association); smalltalk.addMethod( "_storeOn_", smalltalk.method({ selector: "storeOn:", fn: function (aStream) { var self=this; smalltalk.send(self['@key'], "_storeOn_", [aStream]); smalltalk.send(aStream, "_nextPutAll_", ["->"]); smalltalk.send(self['@value'], "_storeOn_", [aStream]); return self;} }), smalltalk.Association); smalltalk.addMethod( "_value", smalltalk.method({ selector: "value", fn: function () { var self=this; return self['@value']; return self;} }), smalltalk.Association); smalltalk.addMethod( "_value_", smalltalk.method({ selector: "value:", fn: function (aValue) { var self=this; (self['@value']=aValue); return self;} }), smalltalk.Association); smalltalk.addMethod( "_key_value_", smalltalk.method({ 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('Collection', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( "__comma", smalltalk.method({ selector: ",", 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.Collection); smalltalk.addMethod( "_add_", smalltalk.method({ selector: "add:", fn: function (anObject) { var self=this; smalltalk.send(self, "_subclassResponsibility", []); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_addAll_", smalltalk.method({ selector: "addAll:", fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_add_", [each]);})]); return aCollection; return self;} }), smalltalk.Collection); smalltalk.addMethod( "_asArray", smalltalk.method({ selector: "asArray", fn: function () { var self=this; return smalltalk.send((smalltalk.Array || Array), "_withAll_", [self]); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_asJSON", smalltalk.method({ selector: "asJSON", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asArray", []), "_collect_", [(function(each){return smalltalk.send(each, "_asJSON", []);})]); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_asOrderedCollection", smalltalk.method({ selector: "asOrderedCollection", fn: function () { var self=this; return smalltalk.send(self, "_asArray", []); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_asSet", smalltalk.method({ selector: "asSet", fn: function () { var self=this; return smalltalk.send((smalltalk.Set || Set), "_withAll_", [self]); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_collect_", smalltalk.method({ selector: "collect:", fn: function (aBlock) { var self=this; var newCollection=nil; (newCollection=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_do_", [(function(each){return smalltalk.send(newCollection, "_add_", [smalltalk.send(aBlock, "_value_", [each])]);})]); return newCollection; return self;} }), smalltalk.Collection); smalltalk.addMethod( "_copyWith_", smalltalk.method({ selector: "copyWith:", fn: function (anObject) { var self=this; return (function($rec){smalltalk.send($rec, "_add_", [anObject]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_copy", [])); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_copyWithAll_", smalltalk.method({ 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.Collection); smalltalk.addMethod( "_copyWithoutAll_", smalltalk.method({ selector: "copyWithoutAll:", fn: function (aCollection) { var self=this; return smalltalk.send(self, "_reject_", [(function(each){return smalltalk.send(aCollection, "_includes_", [each]);})]); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_detect_", smalltalk.method({ selector: "detect:", fn: function (aBlock) { var self=this; return smalltalk.send(self, "_detect_ifNone_", [aBlock, (function(){return smalltalk.send(self, "_errorNotFound", []);})]); return self;} }), smalltalk.Collection); smalltalk.addMethod( "_detect_ifNone_", smalltalk.method({ selector: "detect:ifNone:", fn: function (aBlock, anotherBlock) { var self=this; for(var i = 0; i < self.length; i++) if(aBlock(self[i])) return self[i]; return anotherBlock(); ; return self;} }), smalltalk.Collection); smalltalk.addMethod( "_do_", smalltalk.method({ selector: "do:", fn: function (aBlock) { var self=this; for(var i=0;i "]);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.HashedCollection); smalltalk.addMethod( "_remove_ifAbsent_", smalltalk.method({ selector: "remove:ifAbsent:", fn: function (aKey, aBlock) { var self=this; return smalltalk.send(self, "_removeKey_ifAbsent_", [aKey, aBlock]); return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_removeKey_", smalltalk.method({ selector: "removeKey:", fn: function (aKey) { var self=this; return smalltalk.send(self, "_remove_", [aKey]); return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_removeKey_ifAbsent_", smalltalk.method({ selector: "removeKey:ifAbsent:", fn: function (aKey, aBlock) { var self=this; return ((($receiver = smalltalk.send(self, "_includesKey_", [aKey])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(aBlock, "_value", []);})() : (function(){return smalltalk.send(self, "_basicDelete_", [aKey]);})()) : smalltalk.send($receiver, "_ifFalse_ifTrue_", [(function(){return smalltalk.send(aBlock, "_value", []);}), (function(){return smalltalk.send(self, "_basicDelete_", [aKey]);})])); return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_select_", smalltalk.method({ selector: "select:", fn: function (aBlock) { var self=this; var newDict=nil; (newDict=smalltalk.send(smalltalk.send(self, "_class", []), "_new", [])); smalltalk.send(self, "_keysAndValuesDo_", [(function(key, value){return ((($receiver = smalltalk.send(aBlock, "_value_", [value])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(newDict, "_at_put_", [key, value]);})]));})]); return newDict; return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_shallowCopy", smalltalk.method({ selector: "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.addMethod( "_size", smalltalk.method({ selector: "size", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_keys", []), "_size", []); return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_storeOn_", smalltalk.method({ selector: "storeOn:", fn: function (aStream) { var self=this; 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.HashedCollection); smalltalk.addMethod( "_values", smalltalk.method({ selector: "values", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_keys", []), "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]); return self;} }), smalltalk.HashedCollection); smalltalk.addMethod( "_fromPairs_", smalltalk.method({ selector: "fromPairs:", fn: function (aCollection) { var self=this; var dict=nil; (dict=smalltalk.send(self, "_new", [])); smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(dict, "_add_", [each]);})]); return dict; return self;} }), smalltalk.HashedCollection.klass); smalltalk.addClass('Dictionary', smalltalk.HashedCollection, ['keys', 'values'], 'Kernel-Collections'); smalltalk.addMethod( "_asHashedCollection", smalltalk.method({ selector: "asHashedCollection", fn: function () { var self=this; return smalltalk.send((smalltalk.HashedCollection || HashedCollection), "_fromPairs_", [smalltalk.send(self, "_associations", [])]); return self;} }), smalltalk.Dictionary); smalltalk.addMethod( "_asJSON", smalltalk.method({ selector: "asJSON", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asHashedCollection", []), "_asJSON", []); return self;} }), smalltalk.Dictionary); smalltalk.addMethod( "_at_ifAbsent_", smalltalk.method({ selector: "at:ifAbsent:", fn: function (aKey, aBlock) { var self=this; var index; for(var i=0;i", fn: function (aString) { var self=this; return String(self) > aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( "__gt_eq", smalltalk.method({ selector: ">=", fn: function (aString) { var self=this; return String(self) >= aString._asString(); return self;} }), smalltalk.String); smalltalk.addMethod( "_asJSON", smalltalk.method({ selector: "asJSON", fn: function () { var self=this; return self; return self;} }), smalltalk.String); smalltalk.addMethod( "_asJavaScriptSelector", smalltalk.method({ selector: "asJavaScriptSelector", fn: function () { var self=this; return smalltalk.send(smalltalk.send(smalltalk.send(self, "_asSelector", []), "_replace_with_", ["^_", ""]), "_replace_with_", ["_.*", ""]); return self;} }), smalltalk.String); smalltalk.addMethod( "_asJavascript", smalltalk.method({ selector: "asJavascript", fn: function () { var self=this; 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); smalltalk.addMethod( "_asLowercase", smalltalk.method({ selector: "asLowercase", fn: function () { var self=this; return self.toLowerCase(); return self;} }), smalltalk.String); smalltalk.addMethod( "_asNumber", smalltalk.method({ selector: "asNumber", fn: function () { var self=this; return Number(self); return self;} }), smalltalk.String); smalltalk.addMethod( "_asSelector", smalltalk.method({ selector: "asSelector", fn: function () { var self=this; var selector=nil; (selector=smalltalk.send("_", "__comma", [self])); (selector=smalltalk.send(selector, "_replace_with_", [":", "_"])); (selector=smalltalk.send(selector, "_replace_with_", ["[+]", "_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); smalltalk.addMethod( "_asString", smalltalk.method({ selector: "asString", fn: function () { var self=this; return self; return self;} }), smalltalk.String); smalltalk.addMethod( "_asSymbol", smalltalk.method({ selector: "asSymbol", fn: function () { var self=this; return smalltalk.send((smalltalk.Symbol || Symbol), "_lookup_", [self]); return self;} }), smalltalk.String); smalltalk.addMethod( "_asUppercase", smalltalk.method({ selector: "asUppercase", fn: function () { var self=this; return self.toUpperCase(); return self;} }), smalltalk.String); smalltalk.addMethod( "_asciiValue", smalltalk.method({ selector: "asciiValue", fn: function () { var self=this; return self.charCodeAt(0);; return self;} }), smalltalk.String); smalltalk.addMethod( "_at_ifAbsent_", smalltalk.method({ selector: "at:ifAbsent:", fn: function (anIndex, aBlock) { var self=this; return self[anIndex - 1] || aBlock(); return self;} }), smalltalk.String); smalltalk.addMethod( "_copyFrom_to_", smalltalk.method({ selector: "copyFrom:to:", fn: function (anIndex, anotherIndex) { var self=this; return self.substring(anIndex - 1, anotherIndex); return self;} }), smalltalk.String); smalltalk.addMethod( "_deepCopy", smalltalk.method({ selector: "deepCopy", fn: function () { var self=this; return smalltalk.send(self, "_shallowCopy", []); return self;} }), smalltalk.String); smalltalk.addMethod( "_escaped", smalltalk.method({ selector: "escaped", fn: function () { var self=this; return escape(self); return self;} }), smalltalk.String); smalltalk.addMethod( "_includesSubString_", smalltalk.method({ selector: "includesSubString:", fn: function (subString) { var self=this; return self.indexOf(subString) != -1 ; return self;} }), smalltalk.String); smalltalk.addMethod( "_isString", smalltalk.method({ selector: "isString", fn: function () { var self=this; return true; return self;} }), smalltalk.String); smalltalk.addMethod( "_join_", smalltalk.method({ selector: "join:", fn: function (aCollection) { var self=this; return smalltalk.send((smalltalk.String || String), "_streamContents_", [(function(stream){return smalltalk.send(aCollection, "_do_separatedBy_", [(function(each){return smalltalk.send(stream, "_nextPutAll_", [smalltalk.send(each, "_asString", [])]);}), (function(){return smalltalk.send(stream, "_nextPutAll_", [self]);})]);})]); return self;} }), smalltalk.String); smalltalk.addMethod( "_lineIndicesDo_", smalltalk.method({ selector: "lineIndicesDo:", fn: function (aBlock) { var self=this; 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=function(){return self}})();})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){smalltalk.send(aBlock, "_value_value_value_", [start, sz, sz]);return (function(){throw $early=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 ", fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt", [smalltalk.send(aSymbol, "_asString", [])])); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "__gt_eq", smalltalk.method({ selector: ">=", fn: function (aSymbol) { var self=this; return ((($receiver = smalltalk.send(self, "_asString", [])).klass === smalltalk.Number) ? $receiver >=smalltalk.send(aSymbol, "_asString", []) : smalltalk.send($receiver, "__gt_eq", [smalltalk.send(aSymbol, "_asString", [])])); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_asJSON", smalltalk.method({ selector: "asJSON", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asJSON", []); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_asJavascript", smalltalk.method({ selector: "asJavascript", fn: function () { var self=this; return smalltalk.send(smalltalk.send("smalltalk.symbolFor(\x22", "__comma", [smalltalk.send(self, "_asString", [])]), "__comma", ["\x22)"]); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_asSelector", smalltalk.method({ selector: "asSelector", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_asSelector", []); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_asString", smalltalk.method({ selector: "asString", fn: function () { var self=this; return self.value; return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_asSymbol", smalltalk.method({ selector: "asSymbol", fn: function () { var self=this; return self; return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_at_ifAbsent_", smalltalk.method({ selector: "at:ifAbsent:", fn: function (anIndex, aBlock) { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_at_ifAbsent_", [anIndex, aBlock]); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_copyFrom_to_", smalltalk.method({ selector: "copyFrom:to:", fn: function (anIndex, anotherIndex) { var self=this; return smalltalk.send(smalltalk.send(self, "_class", []), "_fromString_", [smalltalk.send(smalltalk.send(self, "_asString", []), "_copyFrom_to_", [anIndex, anotherIndex])]); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_deepCopy", smalltalk.method({ selector: "deepCopy", fn: function () { var self=this; return self; return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_isSymbol", smalltalk.method({ selector: "isSymbol", fn: function () { var self=this; return true; return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_printString", smalltalk.method({ selector: "printString", fn: function () { var self=this; return smalltalk.send("#", "__comma", [smalltalk.send(self, "_asString", [])]); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_shallowCopy", smalltalk.method({ selector: "shallowCopy", fn: function () { var self=this; return self; return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_size", smalltalk.method({ selector: "size", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_asString", []), "_size", []); return self;} }), smalltalk.Symbol); smalltalk.addMethod( "_basicNew", smalltalk.method({ selector: "basicNew", fn: function () { var self=this; smalltalk.send(self, "_shouldNotImplement", []); return self;} }), smalltalk.Symbol.klass); smalltalk.addMethod( "_fromString_", smalltalk.method({ selector: "fromString:", fn: function (aString) { var self=this; return smalltalk.send(self, "_lookup_", [aString]); return self;} }), smalltalk.Symbol.klass); smalltalk.addMethod( "_lookup_", smalltalk.method({ selector: "lookup:", fn: function (aString) { var self=this; return smalltalk.symbolFor(aString);; return self;} }), smalltalk.Symbol.klass); smalltalk.addClass('Set', smalltalk.Collection, ['elements'], 'Kernel-Collections'); smalltalk.addMethod( "__eq", smalltalk.method({ selector: "=", 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( "_add_", smalltalk.method({ selector: "add:", fn: function (anObject) { var self=this; var found; for(var i=0; i < self['@elements'].length; i++) { if(anObject == self['@elements'][i]) { found = true; break; } } if(!found) {self['@elements'].push(anObject)} ; return self;} }), smalltalk.Set); smalltalk.addMethod( "_asArray", smalltalk.method({ selector: "asArray", fn: function () { var self=this; return smalltalk.send(self['@elements'], "_copy", []); return self;} }), smalltalk.Set); smalltalk.addMethod( "_detect_ifNone_", smalltalk.method({ selector: "detect:ifNone:", fn: function (aBlock, anotherBlock) { var self=this; return smalltalk.send(self['@elements'], "_detect_ifNone_", [aBlock, anotherBlock]); return self;} }), smalltalk.Set); smalltalk.addMethod( "_do_", smalltalk.method({ selector: "do:", fn: function (aBlock) { var self=this; smalltalk.send(self['@elements'], "_do_", [aBlock]); return self;} }), smalltalk.Set); smalltalk.addMethod( "_includes_", smalltalk.method({ selector: "includes:", fn: function (anObject) { var self=this; return smalltalk.send(self['@elements'], "_includes_", [anObject]); return self;} }), smalltalk.Set); smalltalk.addMethod( "_initialize", smalltalk.method({ selector: "initialize", fn: function () { var self=this; smalltalk.send(self, "_initialize", [], smalltalk.Collection); (self['@elements']=[]); return self;} }), smalltalk.Set); smalltalk.addMethod( "_remove_", smalltalk.method({ selector: "remove:", fn: function (anObject) { var self=this; smalltalk.send(self['@elements'], "_remove_", [anObject]); return self;} }), smalltalk.Set); smalltalk.addMethod( "_select_", smalltalk.method({ selector: "select:", 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.addMethod( "_size", smalltalk.method({ selector: "size", fn: function () { var self=this; return smalltalk.send(self['@elements'], "_size", []); return self;} }), smalltalk.Set); smalltalk.addClass('RegularExpression', smalltalk.Object, [], 'Kernel-Collections'); smalltalk.addMethod( "_compile_", smalltalk.method({ selector: "compile:", fn: function (aString) { var self=this; return self.compile(aString); return self;} }), smalltalk.RegularExpression); smalltalk.addMethod( "_exec_", smalltalk.method({ selector: "exec:", fn: function (aString) { var self=this; return self.exec(aString) || nil; return self;} }), smalltalk.RegularExpression); smalltalk.addMethod( "_test_", smalltalk.method({ selector: "test:", fn: function (aString) { var self=this; return self.test(aString); return self;} }), smalltalk.RegularExpression); smalltalk.addMethod( "_fromString_", smalltalk.method({ selector: "fromString:", fn: function (aString) { var self=this; return smalltalk.send(self, "_fromString_flag_", [aString, ""]); return self;} }), smalltalk.RegularExpression.klass); smalltalk.addMethod( "_fromString_flag_", smalltalk.method({ selector: "fromString:flag:", fn: function (aString, anotherString) { var self=this; return new RegExp(aString, anotherString); return self;} }), smalltalk.RegularExpression.klass); smalltalk.addClass('Stream', smalltalk.Object, ['collection', 'position', 'streamSize'], 'Kernel-Collections'); smalltalk.addMethod( "_atEnd", smalltalk.method({ selector: "atEnd", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [smalltalk.send(self, "_size", [])]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_atStart", smalltalk.method({ selector: "atStart", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_position", []), "__eq", [(0)]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_close", smalltalk.method({ selector: "close", fn: function () { var self=this; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_collection", smalltalk.method({ selector: "collection", fn: function () { var self=this; return self['@collection']; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_contents", smalltalk.method({ selector: "contents", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_collection", []), "_copyFrom_to_", [(1), smalltalk.send(self, "_streamSize", [])]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_do_", smalltalk.method({ selector: "do:", fn: function (aBlock) { var self=this; (function(){while(!(function(){return smalltalk.send(self, "_atEnd", []);})()) {(function(){return smalltalk.send(aBlock, "_value_", [smalltalk.send(self, "_next", [])]);})()}})(); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_flush", smalltalk.method({ selector: "flush", fn: function () { var self=this; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_isEmpty", smalltalk.method({ selector: "isEmpty", fn: function () { var self=this; return smalltalk.send(smalltalk.send(self, "_size", []), "__eq", [(0)]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_next", smalltalk.method({ selector: "next", fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return nil;})() : (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return nil;}), (function(){smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);return smalltalk.send(self['@collection'], "_at_", [smalltalk.send(self, "_position", [])]);})])); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_next_", smalltalk.method({ selector: "next:", fn: function (anInteger) { var self=this; var tempCollection=nil; (tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", [])); smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(tempCollection, "_add_", [smalltalk.send(self, "_next", [])]);})]));})]); return tempCollection; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_nextPut_", smalltalk.method({ selector: "nextPut:", fn: function (anObject) { var self=this; smalltalk.send(self, "_position_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]); smalltalk.send(smalltalk.send(self, "_collection", []), "_at_put_", [smalltalk.send(self, "_position", []), anObject]); smalltalk.send(self, "_setStreamSize_", [smalltalk.send(smalltalk.send(self, "_streamSize", []), "_max_", [smalltalk.send(self, "_position", [])])]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_nextPutAll_", smalltalk.method({ selector: "nextPutAll:", fn: function (aCollection) { var self=this; smalltalk.send(aCollection, "_do_", [(function(each){return smalltalk.send(self, "_nextPut_", [each]);})]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_peek", smalltalk.method({ selector: "peek", fn: function () { var self=this; return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return smalltalk.send(smalltalk.send(self, "_collection", []), "_at_", [((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +(1) : smalltalk.send($receiver, "__plus", [(1)]))]);})])); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_position", smalltalk.method({ selector: "position", fn: function () { var self=this; return (($receiver = self['@position']) == nil || $receiver == undefined) ? (function(){return (self['@position']=(0));})() : $receiver; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_position_", smalltalk.method({ selector: "position:", fn: function (anInteger) { var self=this; (self['@position']=anInteger); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_reset", smalltalk.method({ selector: "reset", fn: function () { var self=this; smalltalk.send(self, "_position_", [(0)]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_resetContents", smalltalk.method({ selector: "resetContents", fn: function () { var self=this; smalltalk.send(self, "_reset", []); smalltalk.send(self, "_setStreamSize_", [(0)]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_setCollection_", smalltalk.method({ selector: "setCollection:", fn: function (aCollection) { var self=this; (self['@collection']=aCollection); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_setStreamSize_", smalltalk.method({ selector: "setStreamSize:", fn: function (anInteger) { var self=this; (self['@streamSize']=anInteger); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_setToEnd", smalltalk.method({ selector: "setToEnd", fn: function () { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(self, "_size", [])]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_size", smalltalk.method({ selector: "size", fn: function () { var self=this; return smalltalk.send(self, "_streamSize", []); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_skip_", smalltalk.method({ selector: "skip:", fn: function (anInteger) { var self=this; smalltalk.send(self, "_position_", [smalltalk.send(((($receiver = smalltalk.send(self, "_position", [])).klass === smalltalk.Number) ? $receiver +anInteger : smalltalk.send($receiver, "__plus", [anInteger])), "_min_max_", [smalltalk.send(self, "_size", []), (0)])]); return self;} }), smalltalk.Stream); smalltalk.addMethod( "_streamSize", smalltalk.method({ selector: "streamSize", fn: function () { var self=this; return self['@streamSize']; return self;} }), smalltalk.Stream); smalltalk.addMethod( "_on_", smalltalk.method({ selector: "on:", fn: function (aCollection) { var self=this; return (function($rec){smalltalk.send($rec, "_setCollection_", [aCollection]);smalltalk.send($rec, "_setStreamSize_", [smalltalk.send(aCollection, "_size", [])]);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_new", [])); return self;} }), smalltalk.Stream.klass); smalltalk.addClass('StringStream', smalltalk.Stream, [], 'Kernel-Collections'); smalltalk.addMethod( "_cr", smalltalk.method({ selector: "cr", fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_cr", [])]); return self;} }), smalltalk.StringStream); smalltalk.addMethod( "_crlf", smalltalk.method({ selector: "crlf", fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_crlf", [])]); return self;} }), smalltalk.StringStream); smalltalk.addMethod( "_lf", smalltalk.method({ selector: "lf", fn: function () { var self=this; return smalltalk.send(self, "_nextPutAll_", [smalltalk.send((smalltalk.String || String), "_lf", [])]); return self;} }), smalltalk.StringStream); smalltalk.addMethod( "_next_", smalltalk.method({ selector: "next:", fn: function (anInteger) { var self=this; var tempCollection=nil; (tempCollection=smalltalk.send(smalltalk.send(smalltalk.send(self, "_collection", []), "_class", []), "_new", [])); smalltalk.send(anInteger, "_timesRepeat_", [(function(){return ((($receiver = smalltalk.send(self, "_atEnd", [])).klass === smalltalk.Boolean) ? (! $receiver ? (function(){return (tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]));})() : nil) : smalltalk.send($receiver, "_ifFalse_", [(function(){return (tempCollection=smalltalk.send(tempCollection, "__comma", [smalltalk.send(self, "_next", [])]));})]));})]); return tempCollection; return self;} }), smalltalk.StringStream); smalltalk.addMethod( "_nextPut_", smalltalk.method({ selector: "nextPut:", fn: function (aString) { var self=this; smalltalk.send(self, "_nextPutAll_", [aString]); return self;} }), smalltalk.StringStream); smalltalk.addMethod( "_nextPutAll_", smalltalk.method({ selector: "nextPutAll:", 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( "_space", smalltalk.method({ selector: "space", fn: function () { var self=this; smalltalk.send(self, "_nextPut_", [" "]); return self;} }), smalltalk.StringStream);