|
@@ -182,45 +182,36 @@ selector: "allSubclasses",
|
|
|
protocol: 'accessing',
|
|
|
fn: function (){
|
|
|
var self=this;
|
|
|
-var subclasses,index;
|
|
|
|
|
|
return $core.withContext(function($ctx1) {
|
|
|
|
|
|
-subclasses=self._subclasses();
|
|
|
-
|
|
|
-$ctx1.sendIdx["subclasses"]=1;
|
|
|
-
|
|
|
-index=(1);
|
|
|
-$recv((function(){
|
|
|
+return $recv($globals.Array)._streamContents_((function(str){
|
|
|
|
|
|
return $core.withContext(function($ctx2) {
|
|
|
|
|
|
-return $recv(index).__gt($recv(subclasses)._size());
|
|
|
+return self._allSubclassesDo_((function(each){
|
|
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
|
|
|
+return $core.withContext(function($ctx3) {
|
|
|
|
|
|
-}))._whileFalse_((function(){
|
|
|
+return $recv(str)._nextPut_(each);
|
|
|
|
|
|
-return $core.withContext(function($ctx2) {
|
|
|
+}, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
|
|
|
|
|
|
-$recv(subclasses)._addAll_($recv($recv(subclasses)._at_(index))._subclasses());
|
|
|
-index=$recv(index).__plus((1));
|
|
|
-return index;
|
|
|
+}));
|
|
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
|
|
|
|
|
|
}));
|
|
|
-return subclasses;
|
|
|
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"allSubclasses",{subclasses:subclasses,index:index},$globals.Behavior)});
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"allSubclasses",{},$globals.Behavior)});
|
|
|
|
|
|
},
|
|
|
|
|
|
args: [],
|
|
|
-source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09| subclasses index |\x0a\x09\x0a\x09subclasses := self subclasses.\x0a\x09index := 1.\x0a\x09[ index > subclasses size ]\x0a\x09\x09whileFalse: [ subclasses addAll: (subclasses at: index) subclasses.\x0a\x09\x09\x09index := index + 1 ].\x0a\x0a\x09^ subclasses",
|
|
|
-referencedClasses: [],
|
|
|
+source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09^ Array streamContents: [ :str | self allSubclassesDo: [ :each | str nextPut: each ] ]",
|
|
|
+referencedClasses: ["Array"],
|
|
|
|
|
|
-messageSends: ["subclasses", "whileFalse:", ">", "size", "addAll:", "at:", "+"]
|
|
|
+messageSends: ["streamContents:", "allSubclassesDo:", "nextPut:"]
|
|
|
}),
|
|
|
$globals.Behavior);
|
|
|
|
|
@@ -233,15 +224,9 @@ var self=this;
|
|
|
|
|
|
return $core.withContext(function($ctx1) {
|
|
|
|
|
|
-$recv(self._allSubclasses())._do_((function(each){
|
|
|
-
|
|
|
-return $core.withContext(function($ctx2) {
|
|
|
-
|
|
|
-return $recv(aBlock)._value_(each);
|
|
|
-
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
|
|
|
-
|
|
|
-}));
|
|
|
+$core.traverseClassTree(self, function(subclass) {
|
|
|
+ if (subclass !== self) aBlock._value_(subclass);
|
|
|
+});
|
|
|
return self;
|
|
|
|
|
|
}, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock},$globals.Behavior)});
|
|
@@ -249,10 +234,10 @@ return self;
|
|
|
},
|
|
|
|
|
|
args: ["aBlock"],
|
|
|
-source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a\x09self allSubclasses do: [ :each |\x0a \x09aBlock value: each ]",
|
|
|
+source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a<$core.traverseClassTree(self, function(subclass) {\x0a\x09if (subclass !== self) aBlock._value_(subclass);\x0a})>",
|
|
|
referencedClasses: [],
|
|
|
|
|
|
-messageSends: ["do:", "allSubclasses", "value:"]
|
|
|
+messageSends: []
|
|
|
}),
|
|
|
$globals.Behavior);
|
|
|
|
|
@@ -2190,33 +2175,18 @@ var self=this;
|
|
|
|
|
|
return $core.withContext(function($ctx1) {
|
|
|
|
|
|
-return $recv($recv($recv(self._instanceClass())._subclasses())._select_((function(each){
|
|
|
-
|
|
|
-return $core.withContext(function($ctx2) {
|
|
|
-
|
|
|
-return $recv($recv(each)._isMetaclass())._not();
|
|
|
-
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
|
|
|
-
|
|
|
-})))._collect_((function(each){
|
|
|
-
|
|
|
-return $core.withContext(function($ctx2) {
|
|
|
-
|
|
|
-return $recv(each)._theMetaClass();
|
|
|
-
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
|
|
|
-
|
|
|
-}));
|
|
|
+return $core.metaSubclasses(self);
|
|
|
+return self;
|
|
|
|
|
|
}, function($ctx1) {$ctx1.fill(self,"subclasses",{},$globals.Metaclass)});
|
|
|
|
|
|
},
|
|
|
|
|
|
args: [],
|
|
|
-source: "subclasses\x0a\x09^ (self instanceClass subclasses \x0a\x09\x09select: [ :each | each isMetaclass not ])\x0a\x09\x09collect: [ :each | each theMetaClass ]",
|
|
|
+source: "subclasses\x0a\x09<return $core.metaSubclasses(self)>",
|
|
|
referencedClasses: [],
|
|
|
|
|
|
-messageSends: ["collect:", "select:", "subclasses", "instanceClass", "not", "isMetaclass", "theMetaClass"]
|
|
|
+messageSends: []
|
|
|
}),
|
|
|
$globals.Metaclass);
|
|
|
|