UNPKG

@ambers/lang

Version:

An implementation of the Smalltalk language that runs on top of the JS runtime.

1,533 lines (1,445 loc) 233 kB
define(["amber/boot", "require", "amber/core/Kernel-Helpers"], function($boot,requirejs){"use strict"; var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals; var $pkg = $core.addPackage("Kernel-Objects"); $pkg.transport = {"type":"amd","amdNamespace":"amber/core"}; $core.addClass("ProtoObject", null, "Kernel-Objects"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.ProtoObject.comment="I implement the basic behavior required for any object in Amber.\x0a\x0aIn most cases, subclassing `ProtoObject` is wrong and `Object` should be used instead. However subclassing `ProtoObject` can be useful in some special cases like proxy implementations."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "=", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "= anObject\x0a\x09^ self == anObject", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["=="] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self.__eq_eq(anObject); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "==", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "== anObject\x0a<inlineJS: 'return self === anObject'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return self === anObject"]]], messageSends: [] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return self === anObject; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "asString", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "asString\x0a\x09^ self printString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["printString"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._printString(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asString",{})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "class", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "class\x0a\x09<inlineJS: 'return $self.a$cls'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return $self.a$cls"]]], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self.a$cls; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"class",{})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "doesNotUnderstand:", protocol: "error handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aMessage"], source: "doesNotUnderstand: aMessage\x0a\x09MessageNotUnderstood new\x0a\x09\x09receiver: self;\x0a\x09\x09message: aMessage;\x0a\x09\x09signal", referencedClasses: ["MessageNotUnderstood"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["receiver:", "new", "message:", "signal"] }, function ($methodClass){ return function (aMessage){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; $1=$recv($globals.MessageNotUnderstood)._new(); $recv($1)._receiver_(self); $recv($1)._message_(aMessage); $recv($1)._signal(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "evaluate:on:", protocol: "evaluating", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anEvaluator"], source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString receiver: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["evaluate:receiver:"] }, function ($methodClass){ return function (aString,anEvaluator){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(anEvaluator)._evaluate_receiver_(aString,self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "identityHash", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "identityHash\x0a\x09<inlineJS: '\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, ''identityHash'', {value:hash});\x0a\x09\x09return hash;\x0a\x09'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, 'identityHash', {value:hash});\x0a\x09\x09return hash;\x0a\x09"]]], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); self._deprecatedAPI(); var hash=self.identityHash; if (hash) return hash; hash=$core.nextId(); Object.defineProperty(self, 'identityHash', {value:hash}); return hash; ; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"identityHash",{})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "ifNil:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock"], source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aBlock){ var self=this,$self=this; return self; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "ifNil:ifNotNil:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock", "anotherBlock"], source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["value:"] }, function ($methodClass){ return function (aBlock,anotherBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(anotherBlock)._value_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "ifNotNil:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock"], source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["value:"] }, function ($methodClass){ return function (aBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "ifNotNil:ifNil:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aBlock", "anotherBlock"], source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["value:"] }, function ($methodClass){ return function (aBlock,anotherBlock){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aBlock)._value_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return self; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "inspect", protocol: "inspecting", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "inspect\x0a\x09Inspector inspect: self", referencedClasses: ["Inspector"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["inspect:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($globals.Inspector)._inspect_(self); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"inspect",{})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "inspectOn:", protocol: "inspecting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anInspector"], source: "inspectOn: anInspector", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (anInspector){ var self=this,$self=this; return self; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "instVarNamed:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "instVarNamed: aString\x0a\x09<inlineJS: 'return $self[aString]'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return $self[aString]"]]], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self[aString]; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"instVarNamed:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "instVarNamed:put:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject"], source: "instVarNamed: aString put: anObject\x0a\x09<inlineJS: '$self[aString] = anObject'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["$self[aString] = anObject"]]], messageSends: [] }, function ($methodClass){ return function (aString,anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self[aString] = anObject; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"instVarNamed:put:",{aString:aString,anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "isKindOf:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aClass"], source: "isKindOf: aClass\x0a\x09^ (self isMemberOf: aClass) or: [ self class inheritsFrom: aClass ]", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["or:", "isMemberOf:", "inheritsFrom:", "class"] }, function ($methodClass){ return function (aClass){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); if($core.assert($self._isMemberOf_(aClass))){ return true; } else { return $recv($self._class())._inheritsFrom_(aClass); } //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isKindOf:",{aClass:aClass})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "isNil", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isNil\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return false; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "notNil", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "notNil\x0a\x09^ true", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return true; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "perform:", protocol: "message handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "perform: aString\x0a\x09^ self perform: aString withArguments: #()", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["perform:withArguments:"] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._perform_withArguments_(aString,[]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"perform:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "perform:with:", protocol: "message handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject"], source: "perform: aString with: anObject\x0a\x09<inlineJS: 'return $core.send2(self, aString, [anObject])'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return $core.send2(self, aString, [anObject])"]]], messageSends: [] }, function ($methodClass){ return function (aString,anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $core.send2(self, aString, [anObject]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"perform:with:",{aString:aString,anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "perform:withArguments:", protocol: "message handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "aCollection"], source: "perform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return $core.send2(self, aString, aCollection)'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return $core.send2(self, aString, aCollection)"]]], messageSends: [] }, function ($methodClass){ return function (aString,aCollection){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $core.send2(self, aString, aCollection); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"perform:withArguments:",{aString:aString,aCollection:aCollection})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "printOn:", protocol: "printing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aStream"], source: "printOn: aStream\x0a\x09aStream nextPutAll: (self class name first isVowel\x0a\x09\x09ifTrue: [ 'an ' ]\x0a\x09\x09ifFalse: [ 'a ' ]).\x0a\x09aStream nextPutAll: self class name", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isVowel", "first", "name", "class"] }, function ($methodClass){ return function (aStream){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var $1; if($core.assert($recv($recv([$recv([$self._class() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["class"]=1 //>>excludeEnd("ctx"); ][0])._name() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["name"]=1 //>>excludeEnd("ctx"); ][0])._first())._isVowel())){ $1="an "; } else { $1="a "; } [$recv(aStream)._nextPutAll_($1) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["nextPutAll:"]=1 //>>excludeEnd("ctx"); ][0]; $recv(aStream)._nextPutAll_($recv($self._class())._name()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "printString", protocol: "printing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "printString\x0a\x09^ String streamContents: [ :str | \x0a\x09\x09self printOn: str ]", referencedClasses: ["String"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["streamContents:", "printOn:"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($globals.String)._streamContents_((function(str){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $self._printOn_(str); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)}); //>>excludeEnd("ctx"); })); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"printString",{})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "yourself", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "yourself\x0a\x09^ self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return self; }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "~=", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "~= anObject\x0a\x09^ (self = anObject) = false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["="] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return [$recv($self.__eq(anObject)).__eq(false) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["="]=1 //>>excludeEnd("ctx"); ][0]; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"~=",{anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "~~", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "~~ anObject\x0a\x09^ (self == anObject) = false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["=", "=="] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self.__eq_eq(anObject)).__eq(false); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"~~",{anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.ProtoObject); $core.addMethod( $core.method({ selector: "initialize", protocol: "initialization", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "initialize", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return self; }; }), $globals.ProtoObject.a$cls); $core.addClass("Object", $globals.ProtoObject, "Kernel-Objects"); //>>excludeStart("ide", pragmas.excludeIdeData); $globals.Object.comment="**I am the root of the Smalltalk class system**. With the exception of unual subclasses of `ProtoObject`, all other classes in the system are subclasses of me.\x0a\x0aI provide default behavior common to all normal objects (some of it inherited from `ProtoObject`), such as:\x0a\x0a- accessing\x0a- copying\x0a- comparison\x0a- error handling\x0a- message sending\x0a- reflection\x0a\x0aAlso utility messages that all objects should respond to are defined here.\x0a\x0aI have no instance variable.\x0a\x0a##Access\x0a\x0aInstance variables can be accessed with `#instVarAt:` and `#instVarAt:put:`. `#instanceVariableNames` answers a collection of all instance variable names.\x0aAccessing JavaScript properties of an object is done through `#basicAt:`, `#basicAt:put:` and `basicDelete:`.\x0a\x0a##Copying\x0a\x0aCopying an object is handled by `#copy` and `#deepCopy`. The first one performs a shallow copy of the receiver, while the second one performs a deep copy.\x0aThe hook method `#postCopy` can be overriden in subclasses to copy fields as necessary to complete the full copy. It will be sent by the copy of the receiver.\x0a\x0a##Comparison\x0a\x0aI understand equality `#=` and identity `#==` comparison.\x0a\x0a##Error handling\x0a\x0a- `#halt` is the typical message to use for inserting breakpoints during debugging.\x0a- `#error:` throws a generic error exception\x0a- `#doesNotUnderstand:` handles the fact that there was an attempt to send the given message to the receiver but the receiver does not understand this message.\x0a\x09Overriding this message can be useful to implement proxies for example."; //>>excludeEnd("ide"); $core.addMethod( $core.method({ selector: "->", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["anObject"], source: "-> anObject\x0a\x09^ Association key: self value: anObject", referencedClasses: ["Association"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["key:value:"] }, function ($methodClass){ return function (anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($globals.Association)._key_value_(self,anObject); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"->",{anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "andSelfToNumber:", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "andSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("I am not a number."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"andSelfToNumber:",{aNumber:aNumber})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "appendToString:", protocol: "copying", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "appendToString: aString\x0a\x09self error: 'Cannot add self to a string.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("Cannot add self to a string."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "asJSONString", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "asJSONString\x0a\x09^ JSON stringify: self asJavaScriptObject", referencedClasses: ["JSON"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["stringify:", "asJavaScriptObject"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($globals.JSON)._stringify_($self._asJavaScriptObject()); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asJSONString",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "asJavaScriptObject", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "asJavaScriptObject\x0a\x09| variables |\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptObject on your classes instead.'.\x0a\x09variables := HashedCollection new.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarNamed: each) asJavaScriptObject ].\x0a\x09^ variables", referencedClasses: ["HashedCollection"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["deprecatedAPI:", "new", "do:", "allInstanceVariableNames", "class", "at:put:", "asJavaScriptObject", "instVarNamed:"] }, function ($methodClass){ return function (){ var self=this,$self=this; var variables; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._deprecatedAPI_("Implement domain-specific #asJavaScriptObject on your classes instead."); variables=$recv($globals.HashedCollection)._new(); $recv($recv($self._class())._allInstanceVariableNames())._do_((function(each){ //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx2) { //>>excludeEnd("ctx"); return $recv(variables)._at_put_(each,$recv($self._instVarNamed_(each))._asJavaScriptObject()); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)}); //>>excludeEnd("ctx"); })); return variables; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{variables:variables})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "asJavaScriptSource", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "asJavaScriptSource\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptSource on your classes instead.'.\x0a\x09^ self asString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["deprecatedAPI:", "asString"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._deprecatedAPI_("Implement domain-specific #asJavaScriptSource on your classes instead."); return $self._asString(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "basicAt:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "basicAt: aString\x0a\x09<inlineJS: 'return self[aString]'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return self[aString]"]]], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return self[aString]; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"basicAt:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "basicAt:put:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "anObject"], source: "basicAt: aString put: anObject\x0a\x09<inlineJS: 'return self[aString] = anObject'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return self[aString] = anObject"]]], messageSends: [] }, function ($methodClass){ return function (aString,anObject){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return self[aString] = anObject; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"basicAt:put:",{aString:aString,anObject:anObject})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "basicDelete:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "basicDelete: aString\x0a\x09<inlineJS: 'delete self[aString]; return aString'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["delete self[aString]; return aString"]]], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); delete self[aString]; return aString; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"basicDelete:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "basicPerform:", protocol: "message handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "basicPerform: aString\x0a\x09^ self basicPerform: aString withArguments: #()", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["basicPerform:withArguments:"] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $self._basicPerform_withArguments_(aString,[]); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"basicPerform:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "basicPerform:withArguments:", protocol: "message handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString", "aCollection"], source: "basicPerform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return self[aString].apply(self, aCollection);'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["return self[aString].apply(self, aCollection);"]]], messageSends: [] }, function ($methodClass){ return function (aString,aCollection){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return self[aString].apply(self, aCollection);; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"basicPerform:withArguments:",{aString:aString,aCollection:aCollection})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "browse", protocol: "browsing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "browse\x0a\x09Finder findClass: self class", referencedClasses: ["Finder"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["findClass:", "class"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($globals.Finder)._findClass_($self._class()); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"browse",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "copy", protocol: "copying", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "copy\x0a\x09^ self shallowCopy postCopy", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["postCopy", "shallowCopy"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._shallowCopy())._postCopy(); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"copy",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "deepCopy", protocol: "copying", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "deepCopy\x0a\x09<inlineJS: '\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09'>", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [["inlineJS:", ["\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09"]]], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); var copy = self.a$cls._new(); Object.keys(self).forEach(function (i) { copy[i] = $recv(self[i])._deepCopy(); }); return copy; ; return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "deprecatedAPI", protocol: "error handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "deprecatedAPI\x0a\x09\x22Just a simple way to deprecate methods.\x0a\x09#deprecatedAPI is in the 'error handling' protocol even if it doesn't throw an error,\x0a\x09but it could in the future.\x22\x0a\x09console warn: thisContext home asString, ' is deprecated! (in ', thisContext home home asString, ')'.", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["warn:", ",", "asString", "home"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["home"]=1 //>>excludeEnd("ctx"); ][0])._asString() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["asString"]=1 //>>excludeEnd("ctx"); ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["home"]=2 //>>excludeEnd("ctx"); ][0])._asString()) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx[","]=2 //>>excludeEnd("ctx"); ][0]).__comma(")") //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx[","]=1 //>>excludeEnd("ctx"); ][0]); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "deprecatedAPI:", protocol: "error handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "deprecatedAPI: aString\x0a\x09\x22Just a simple way to deprecate methods.\x0a\x09#deprecatedAPI is in the 'error handling' protocol even if it doesn't throw an error,\x0a\x09but it could in the future.\x22\x0a\x09console warn: thisContext home asString, ' is deprecated! (in ', thisContext home home asString, ')'.\x0a\x09console warn: aString", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["warn:", ",", "asString", "home"] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); [$recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["home"]=1 //>>excludeEnd("ctx"); ][0])._asString() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["asString"]=1 //>>excludeEnd("ctx"); ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home() //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["home"]=2 //>>excludeEnd("ctx"); ][0])._asString()) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx[","]=2 //>>excludeEnd("ctx"); ][0]).__comma(")") //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx[","]=1 //>>excludeEnd("ctx"); ][0]) //>>excludeStart("ctx", pragmas.excludeDebugContexts); ,$ctx1.sendIdx["warn:"]=1 //>>excludeEnd("ctx"); ][0]; $recv(console)._warn_(aString); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "divideBySelfToNumber:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "divideBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("I am not a number."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"divideBySelfToNumber:",{aNumber:aNumber})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "divisionRemainderBySelfToNumber:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "divisionRemainderBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("I am not a number."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"divisionRemainderBySelfToNumber:",{aNumber:aNumber})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "error:", protocol: "error handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "error: aString\x0a\x09Error signal: aString", referencedClasses: ["Error"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["signal:"] }, function ($methodClass){ return function (aString){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($globals.Error)._signal_(aString); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "halt", protocol: "error handling", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "halt\x0a\x09Halt signal", referencedClasses: ["Halt"], //>>excludeEnd("ide"); pragmas: [], messageSends: ["signal"] }, function ($methodClass){ return function (){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $recv($globals.Halt)._signal(); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"halt",{})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "in:", protocol: "evaluating", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aValuable"], source: "in: aValuable\x0a\x09^ aValuable value: self", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["value:"] }, function ($methodClass){ return function (aValuable){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv(aValuable)._value_(self); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"in:",{aValuable:aValuable})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isImmutable", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isImmutable\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isMemberOf:", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aClass"], source: "isMemberOf: aClass\x0a\x09^ self class = aClass", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["=", "class"] }, function ($methodClass){ return function (aClass){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); return $recv($self._class()).__eq(aClass); //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"isMemberOf:",{aClass:aClass})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isNumberEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "isNumberEqualToSelf: aNumber\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isNumberGreaterThanOrEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "isNumberGreaterThanOrEqualToSelf: aNumber\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isNumberGreaterThanSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "isNumberGreaterThanSelf: aNumber\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isNumberLessThanOrEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "isNumberLessThanOrEqualToSelf: aNumber\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isNumberLessThanSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "isNumberLessThanSelf: aNumber\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isParseFailure", protocol: "testing", //>>excludeStart("ide", pragmas.excludeIdeData); args: [], source: "isParseFailure\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isStringEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "isStringEqualToSelf: aString\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isStringGreaterThanOrEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "isStringGreaterThanOrEqualToSelf: aString\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isStringGreaterThanSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "isStringGreaterThanSelf: aString\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isStringLessThanOrEqualToSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "isStringLessThanOrEqualToSelf: aString\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "isStringLessThanSelf:", protocol: "comparing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aString"], source: "isStringLessThanSelf: aString\x0a\x09^ false", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: [] }, function ($methodClass){ return function (aString){ var self=this,$self=this; return false; }; }), $globals.Object); $core.addMethod( $core.method({ selector: "minusSelfToNumber:", protocol: "accessing", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "minusSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("I am not a number."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"minusSelfToNumber:",{aNumber:aNumber})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "orSelfToNumber:", protocol: "converting", //>>excludeStart("ide", pragmas.excludeIdeData); args: ["aNumber"], source: "orSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'", referencedClasses: [], //>>excludeEnd("ide"); pragmas: [], messageSends: ["error:"] }, function ($methodClass){ return function (aNumber){ var self=this,$self=this; //>>excludeStart("ctx", pragmas.excludeDebugContexts); return $core.withContext(function($ctx1) { //>>excludeEnd("ctx"); $self._error_("I am not a number."); return self; //>>excludeStart("ctx", pragmas.excludeDebugContexts); }, function($ctx1) {$ctx1.fill(self,"orSelfToNumber:",{aNumber:aNumber})}); //>>excludeEnd("ctx"); }; }), $globals.Object); $core.addMethod( $core.method({ selector: "plusSelfToNumber:", protocol: "accessing", //>>excludeStart("ide", pragmas.e