|
@@ -709,7 +709,7 @@ return _st(_st(aBlock)._value_(each)).__eq(false);
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock},smalltalk.Collection)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock},smalltalk.Collection)})},
|
|
args: ["aBlock"],
|
|
args: ["aBlock"],
|
|
-source: "reject: aBlock\x0a\x09^self select: [:each | (aBlock value: each) = false]",
|
|
|
|
|
|
+source: "reject: aBlock\x0a\x09^ self select: [ :each | (aBlock value: each) = false ]",
|
|
messageSends: ["select:", "=", "value:"],
|
|
messageSends: ["select:", "=", "value:"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -779,6 +779,33 @@ referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.Collection);
|
|
smalltalk.Collection);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "select:thenCollect:",
|
|
|
|
+category: 'enumerating',
|
|
|
|
+fn: function (selectBlock,collectBlock){
|
|
|
|
+var self=this;
|
|
|
|
+var stream;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
|
+var $1,$2;
|
|
|
|
+stream=_st(_st(self._class())._new())._writeStream();
|
|
|
|
+self._do_((function(each){
|
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
|
+$1=_st(selectBlock)._value_(each);
|
|
|
|
+if(smalltalk.assert($1)){
|
|
|
|
+return _st(stream)._nextPut_(_st(collectBlock)._value_(each));
|
|
|
|
+};
|
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
|
|
+$2=_st(stream)._contents();
|
|
|
|
+return $2;
|
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,stream:stream},smalltalk.Collection)})},
|
|
|
|
+args: ["selectBlock", "collectBlock"],
|
|
|
|
+source: "select: selectBlock thenCollect: collectBlock\x0a\x09| stream |\x0a\x09stream := self class new writeStream.\x0a\x09self do: [:each |\x0a\x09\x09(selectBlock value: each) ifTrue: [\x0a\x09\x09stream nextPut: (collectBlock value: each)]].\x0a\x09^stream contents",
|
|
|
|
+messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "nextPut:", "value:", "contents"],
|
|
|
|
+referencedClasses: []
|
|
|
|
+}),
|
|
|
|
+smalltalk.Collection);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
selector: "size",
|
|
selector: "size",
|
|
@@ -1729,16 +1756,15 @@ category: 'accessing',
|
|
fn: function (){
|
|
fn: function (){
|
|
var self=this;
|
|
var self=this;
|
|
return smalltalk.withContext(function($ctx1) {
|
|
return smalltalk.withContext(function($ctx1) {
|
|
-var $1;
|
|
|
|
-$1=_st(self._keys())._collect_((function(each){
|
|
|
|
-return smalltalk.withContext(function($ctx2) {
|
|
|
|
-return self._at_(each);
|
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1)})}));
|
|
|
|
-return $1;
|
|
|
|
-}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.HashedCollection)})},
|
|
|
|
|
|
+
|
|
|
|
+ return self._keys().map(function(key){
|
|
|
|
+ return self._at_(key);
|
|
|
|
+ });
|
|
|
|
+ ;
|
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.HashedCollection)})},
|
|
args: [],
|
|
args: [],
|
|
-source: "values\x0a\x09^self keys collect: [:each | self at: each]",
|
|
|
|
-messageSends: ["collect:", "at:", "keys"],
|
|
|
|
|
|
+source: "values\x0a\x09<\x0a\x09\x09return self._keys().map(function(key){\x0a\x09\x09\x09return self._at_(key);\x0a\x09\x09});\x0a\x09>",
|
|
|
|
+messageSends: [],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.HashedCollection);
|
|
smalltalk.HashedCollection);
|
|
@@ -1750,14 +1776,14 @@ category: 'enumerating',
|
|
fn: function (aBlock){
|
|
fn: function (aBlock){
|
|
var self=this;
|
|
var self=this;
|
|
return smalltalk.withContext(function($ctx1) {
|
|
return smalltalk.withContext(function($ctx1) {
|
|
-self._keysAndValuesDo_((function(key,value){
|
|
|
|
|
|
+_st(self._values())._do_((function(value){
|
|
return smalltalk.withContext(function($ctx2) {
|
|
return smalltalk.withContext(function($ctx2) {
|
|
return _st(aBlock)._value_(value);
|
|
return _st(aBlock)._value_(value);
|
|
-}, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1)})}));
|
|
|
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({value:value},$ctx1)})}));
|
|
return self}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
|
|
return self}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.HashedCollection)})},
|
|
args: ["aBlock"],
|
|
args: ["aBlock"],
|
|
-source: "valuesDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value | aBlock value: value ]",
|
|
|
|
-messageSends: ["keysAndValuesDo:", "value:"],
|
|
|
|
|
|
+source: "valuesDo: aBlock\x0a\x09self values do: [ :value | aBlock value: value ]",
|
|
|
|
+messageSends: ["do:", "value:", "values"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.HashedCollection);
|
|
smalltalk.HashedCollection);
|
|
@@ -1868,7 +1894,7 @@ $1=_st($HashedCollection())._from_(self._associations());
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{},smalltalk.Dictionary)})},
|
|
args: [],
|
|
args: [],
|
|
-source: "asHashedCollection\x0a\x09^HashedCollection from: self associations",
|
|
|
|
|
|
+source: "asHashedCollection\x0a\x09^ HashedCollection from: self associations",
|
|
messageSends: ["from:", "associations"],
|
|
messageSends: ["from:", "associations"],
|
|
referencedClasses: ["HashedCollection"]
|
|
referencedClasses: ["HashedCollection"]
|
|
}),
|
|
}),
|
|
@@ -1886,7 +1912,7 @@ $1=_st(self._asHashedCollection())._asJSON();
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"asJSON",{},smalltalk.Dictionary)})},
|
|
args: [],
|
|
args: [],
|
|
-source: "asJSON\x0a\x09^self asHashedCollection asJSON",
|
|
|
|
|
|
+source: "asJSON\x0a\x09^ self asHashedCollection asJSON",
|
|
messageSends: ["asJSON", "asHashedCollection"],
|
|
messageSends: ["asJSON", "asHashedCollection"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -1974,7 +2000,7 @@ $1=_st(self["@keys"])._at_(index);
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index},smalltalk.Dictionary)})},
|
|
args: ["anObject", "aBlock"],
|
|
args: ["anObject", "aBlock"],
|
|
-source: "indexOf: anObject ifAbsent: aBlock\x0a\x0a\x09| index |\x0a\x09index := values indexOf: anObject ifAbsent: [0].\x0a\x09^ index = 0 ifTrue: [ aBlock value ] ifFalse: [ keys at: index ]",
|
|
|
|
|
|
+source: "indexOf: anObject ifAbsent: aBlock\x0a\x09| index |\x0a\x09index := values \x0a\x09\x09indexOf: anObject \x0a\x09\x09ifAbsent: [ 0 ].\x0a\x09^ index = 0 \x0a\x09\x09ifTrue: [ aBlock value ] \x0a\x09\x09ifFalse: [ keys at: index ]",
|
|
messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "value", "at:", "="],
|
|
messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "value", "at:", "="],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -2010,7 +2036,7 @@ $1=_st(self["@keys"])._copy();
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"keys",{},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"keys",{},smalltalk.Dictionary)})},
|
|
args: [],
|
|
args: [],
|
|
-source: "keys\x0a\x09^keys copy",
|
|
|
|
|
|
+source: "keys\x0a\x09^ keys copy",
|
|
messageSends: ["copy"],
|
|
messageSends: ["copy"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -2028,7 +2054,7 @@ $1=_st(self["@keys"])._with_do_(self["@values"],aBlock);
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
args: ["aBlock"],
|
|
args: ["aBlock"],
|
|
-source: "keysAndValuesDo: aBlock\x0a\x09^keys with: values do: aBlock",
|
|
|
|
|
|
+source: "keysAndValuesDo: aBlock\x0a\x09^ keys with: values do: aBlock",
|
|
messageSends: ["with:do:"],
|
|
messageSends: ["with:do:"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -2046,7 +2072,7 @@ $1=_st(self["@keys"])._do_(aBlock);
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
args: ["aBlock"],
|
|
args: ["aBlock"],
|
|
-source: "keysDo: aBlock\x0a\x09^keys do: aBlock",
|
|
|
|
|
|
+source: "keysDo: aBlock\x0a\x09^ keys do: aBlock",
|
|
messageSends: ["do:"],
|
|
messageSends: ["do:"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -2111,12 +2137,12 @@ fn: function (){
|
|
var self=this;
|
|
var self=this;
|
|
return smalltalk.withContext(function($ctx1) {
|
|
return smalltalk.withContext(function($ctx1) {
|
|
var $1;
|
|
var $1;
|
|
-$1=_st(self["@values"])._copy();
|
|
|
|
|
|
+$1=self["@values"];
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"values",{},smalltalk.Dictionary)})},
|
|
args: [],
|
|
args: [],
|
|
-source: "values\x0a\x09^values copy",
|
|
|
|
-messageSends: ["copy"],
|
|
|
|
|
|
+source: "values\x0a\x09^ values",
|
|
|
|
+messageSends: [],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.Dictionary);
|
|
smalltalk.Dictionary);
|
|
@@ -2133,7 +2159,7 @@ $1=_st(self["@values"])._do_(aBlock);
|
|
return $1;
|
|
return $1;
|
|
}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
}, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock},smalltalk.Dictionary)})},
|
|
args: ["aBlock"],
|
|
args: ["aBlock"],
|
|
-source: "valuesDo: aBlock\x0a\x09^values do: aBlock",
|
|
|
|
|
|
+source: "valuesDo: aBlock\x0a\x09^ values do: aBlock",
|
|
messageSends: ["do:"],
|
|
messageSends: ["do:"],
|
|
referencedClasses: []
|
|
referencedClasses: []
|
|
}),
|
|
}),
|
|
@@ -2853,6 +2879,22 @@ referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.Array);
|
|
smalltalk.Array);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "collect:",
|
|
|
|
+category: 'enumerating',
|
|
|
|
+fn: function (aBlock){
|
|
|
|
+var self=this;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
|
+return self.map(function(each) {return aBlock._value_(each)});
|
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock},smalltalk.Array)})},
|
|
|
|
+args: ["aBlock"],
|
|
|
|
+source: "collect: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09<return self.map(function(each) {return aBlock._value_(each)})>",
|
|
|
|
+messageSends: [],
|
|
|
|
+referencedClasses: []
|
|
|
|
+}),
|
|
|
|
+smalltalk.Array);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
selector: "join:",
|
|
selector: "join:",
|
|
@@ -2966,6 +3008,30 @@ referencedClasses: []
|
|
}),
|
|
}),
|
|
smalltalk.Array);
|
|
smalltalk.Array);
|
|
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
|
+smalltalk.method({
|
|
|
|
+selector: "select:",
|
|
|
|
+category: 'enumerating',
|
|
|
|
+fn: function (aBlock){
|
|
|
|
+var self=this;
|
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
|
+
|
|
|
|
+ var result = self.klass._new();
|
|
|
|
+ for(var i=0; i<self.length; i++) {
|
|
|
|
+ if(aBlock._value_(self[i])) {
|
|
|
|
+ result.push(self[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ ;
|
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock},smalltalk.Array)})},
|
|
|
|
+args: ["aBlock"],
|
|
|
|
+source: "select: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<\x0a\x09\x09var result = self.klass._new();\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09if(aBlock._value_(self[i])) {\x0a\x09\x09\x09\x09result.push(self[i]);\x0a\x09\x09\x09}\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09>",
|
|
|
|
+messageSends: [],
|
|
|
|
+referencedClasses: []
|
|
|
|
+}),
|
|
|
|
+smalltalk.Array);
|
|
|
|
+
|
|
smalltalk.addMethod(
|
|
smalltalk.addMethod(
|
|
smalltalk.method({
|
|
smalltalk.method({
|
|
selector: "size",
|
|
selector: "size",
|