|
@@ -35576,7 +35576,7 @@ smalltalk.Repl.comment="I am a class representing a REPL (Read Evaluate Print Lo
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "addVariableNamed:to:",
|
|
|
-category: 'actions',
|
|
|
+category: 'private',
|
|
|
fn: function (aString,anObject){
|
|
|
var self=this;
|
|
|
var class_,compiler,newClassName,newClass,newObject;
|
|
@@ -35776,7 +35776,7 @@ self["@readline"]=_st(require)._value_("readline");
|
|
|
self["@util"]=_st(require)._value_("util");
|
|
|
return self}, function($ctx1) {$ctx1.fill(self,"initialize",{},smalltalk.Repl)})},
|
|
|
args: [],
|
|
|
-source: "initialize\x0a\x09super initialize.\x0a\x09session := DoIt new.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'.",
|
|
|
+source: "initialize\x0a\x09super initialize.\x0a\x09session := DoIt new.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'",
|
|
|
messageSends: ["initialize", "new", "value:"],
|
|
|
referencedClasses: ["DoIt"]
|
|
|
}),
|
|
@@ -35785,7 +35785,7 @@ smalltalk.Repl);
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "instanceVariableNamesFor:",
|
|
|
-category: 'actions',
|
|
|
+category: 'private',
|
|
|
fn: function (aClass){
|
|
|
var self=this;
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
@@ -35841,61 +35841,76 @@ selector: "line:",
|
|
|
category: 'actions',
|
|
|
fn: function (buffer){
|
|
|
var self=this;
|
|
|
-var assignment;
|
|
|
+var assignment,varName,code,value;
|
|
|
function $Transcript(){return smalltalk.Transcript||(typeof Transcript=="undefined"?nil:Transcript)}
|
|
|
return smalltalk.withContext(function($ctx1) {
|
|
|
-var $1,$2,$3,$4,$5,$6;
|
|
|
+var $1,$2,$3,$4;
|
|
|
assignment=_st(_st(buffer)._tokenize_(":="))._collect_((function(s){
|
|
|
return smalltalk.withContext(function($ctx2) {
|
|
|
return _st(s)._trimBoth();
|
|
|
}, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1)})}));
|
|
|
-$1=_st(_st(_st(assignment)._size()).__eq((2)))._and_((function(){
|
|
|
-return smalltalk.withContext(function($ctx2) {
|
|
|
-return _st(_st(_st(assignment)._first())._includes_(" "))._not();
|
|
|
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
|
|
+$1=_st(self._instanceVariableNamesFor_(_st(self["@session"])._class()))._includes_(buffer);
|
|
|
if(smalltalk.assert($1)){
|
|
|
-var name,value;
|
|
|
-name=_st(assignment)._first();
|
|
|
-name;
|
|
|
-self["@session"]=self._addVariableNamed_to_(name,self["@session"]);
|
|
|
-self["@session"];
|
|
|
-value=self._eval_on_quiet_(buffer,self["@session"],true);
|
|
|
+varName=buffer;
|
|
|
+varName;
|
|
|
+value=_st(self["@session"])._perform_(buffer);
|
|
|
value;
|
|
|
-$2=$Transcript();
|
|
|
-_st($2)._show_(_st(_st(_st(_st(name).__comma(": ")).__comma(_st(_st(value)._class())._name())).__comma(" = ")).__comma(_st(value)._asString()));
|
|
|
-$3=_st($2)._cr();
|
|
|
-$3;
|
|
|
-_st(self["@interface"])._prompt();
|
|
|
} else {
|
|
|
-var res,value;
|
|
|
-$4=self["@resultCount"];
|
|
|
-if(($receiver = $4) == nil || $receiver == undefined){
|
|
|
-self["@resultCount"]=(1);
|
|
|
-self["@resultCount"];
|
|
|
+$2=_st(_st(_st(assignment)._size()).__eq((2)))._and_((function(){
|
|
|
+return smalltalk.withContext(function($ctx2) {
|
|
|
+return _st(_st(_st(assignment)._first())._includes_(" "))._not();
|
|
|
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1)})}));
|
|
|
+if(smalltalk.assert($2)){
|
|
|
+code=_st(assignment)._last();
|
|
|
+code;
|
|
|
+varName=_st(assignment)._first();
|
|
|
} else {
|
|
|
-self["@resultCount"]=_st(self["@resultCount"]).__plus((1));
|
|
|
-self["@resultCount"];
|
|
|
+code=buffer;
|
|
|
+code;
|
|
|
+varName=self._nextResultName();
|
|
|
};
|
|
|
-res="res".__comma(_st(self["@resultCount"])._asString());
|
|
|
-res;
|
|
|
-self["@session"]=self._addVariableNamed_to_(res,self["@session"]);
|
|
|
+varName;
|
|
|
+self["@session"]=self._addVariableNamed_to_(varName,self["@session"]);
|
|
|
self["@session"];
|
|
|
-value=self._eval_on_quiet_(_st(_st(res).__comma(" := ")).__comma(buffer),self["@session"],true);
|
|
|
+value=self._eval_on_quiet_(_st(_st(varName).__comma(" := ")).__comma(code),self["@session"],true);
|
|
|
value;
|
|
|
-$5=$Transcript();
|
|
|
-_st($5)._show_(_st(_st(_st(_st(res).__comma(": ")).__comma(_st(_st(value)._class())._name())).__comma(" = ")).__comma(_st(value)._asString()));
|
|
|
-$6=_st($5)._cr();
|
|
|
-$6;
|
|
|
-_st(self["@interface"])._prompt();
|
|
|
};
|
|
|
-return self}, function($ctx1) {$ctx1.fill(self,"line:",{buffer:buffer,assignment:assignment},smalltalk.Repl)})},
|
|
|
+$3=$Transcript();
|
|
|
+_st($3)._show_(_st(_st(_st(_st(varName).__comma(": ")).__comma(_st(_st(value)._class())._name())).__comma(" = ")).__comma(_st(value)._asString()));
|
|
|
+$4=_st($3)._cr();
|
|
|
+_st(self["@interface"])._prompt();
|
|
|
+return self}, function($ctx1) {$ctx1.fill(self,"line:",{buffer:buffer,assignment:assignment,varName:varName,code:code,value:value},smalltalk.Repl)})},
|
|
|
args: ["buffer"],
|
|
|
-source: "line: buffer\x0a\x09| assignment |\x0a\x09assignment := (buffer tokenize: ':=') collect: [:s | s trimBoth].\x0a (assignment size = 2 and: [(assignment first includes: ' ') not])\x0a \x09ifTrue: [ |name value|\x0a \x09\x09name := assignment first.\x0a \x09\x09session := self addVariableNamed: name to: session.\x0a\x0a \x09\x09value := self eval: buffer on: session quiet: true.\x0a\x0a \x09\x09Transcript show: name, ': ', value class name, ' = ', value asString; cr.\x0a \x09\x09interface prompt]\x0a \x09ifFalse: [ | res value |\x0a \x09\x09resultCount\x0a \x09\x09\x09ifNotNil: [resultCount := resultCount + 1]\x0a \x09\x09\x09ifNil: [resultCount := 1].\x0a \x09\x09res := 'res', resultCount asString.\x0a \x09\x09session := self addVariableNamed: res to: session.\x0a \x09\x09value := self eval: res, ' := ', buffer on: session quiet: true.\x0a\x0a \x09\x09Transcript show: res, ': ', value class name, ' = ', value asString; cr.\x0a \x09\x09interface prompt]",
|
|
|
-messageSends: ["collect:", "trimBoth", "tokenize:", "ifTrue:ifFalse:", "first", "addVariableNamed:to:", "eval:on:quiet:", "show:", ",", "asString", "name", "class", "cr", "prompt", "ifNotNil:ifNil:", "+", "and:", "not", "includes:", "=", "size"],
|
|
|
+source: "line: buffer\x0a\x09| assignment varName code value |\x0a\x09assignment := (buffer tokenize: ':=') collect: [:s | s trimBoth].\x0a\x0a ((self instanceVariableNamesFor: session class) includes: buffer)\x0a \x09ifFalse: [\x0a \x09\x09varName := (assignment size = 2 and: [(assignment first includes: ' ') not])\x0a \x09\x09\x09ifTrue: [code := assignment last. assignment first]\x0a \x09\x09\x09ifFalse: [code := buffer. self nextResultName].\x0a \x09\x09session := self addVariableNamed: varName to: session.\x0a \x09\x09value := self eval: varName, ' := ', code on: session quiet: true]\x0a \x09ifTrue: [ \x22Do not assign new variable if previous variable has been recalled.\x22\x0a \x09\x09varName := buffer.\x0a \x09\x09value := session perform: buffer].\x0a\x0a Transcript show: varName, ': ', value class name, ' = ', value asString; cr.\x0a interface prompt",
|
|
|
+messageSends: ["collect:", "trimBoth", "tokenize:", "ifFalse:ifTrue:", "ifTrue:ifFalse:", "last", "first", "nextResultName", "and:", "not", "includes:", "=", "size", "addVariableNamed:to:", "eval:on:quiet:", ",", "perform:", "instanceVariableNamesFor:", "class", "show:", "asString", "name", "cr", "prompt"],
|
|
|
referencedClasses: ["Transcript"]
|
|
|
}),
|
|
|
smalltalk.Repl);
|
|
|
|
|
|
+smalltalk.addMethod(
|
|
|
+smalltalk.method({
|
|
|
+selector: "nextResultName",
|
|
|
+category: 'private',
|
|
|
+fn: function (){
|
|
|
+var self=this;
|
|
|
+return smalltalk.withContext(function($ctx1) {
|
|
|
+var $1,$2;
|
|
|
+$1=self["@resultCount"];
|
|
|
+if(($receiver = $1) == nil || $receiver == undefined){
|
|
|
+self["@resultCount"]=(1);
|
|
|
+} else {
|
|
|
+self["@resultCount"]=_st(self["@resultCount"]).__plus((1));
|
|
|
+};
|
|
|
+$2="res".__comma(_st(self["@resultCount"])._asString());
|
|
|
+return $2;
|
|
|
+}, function($ctx1) {$ctx1.fill(self,"nextResultName",{},smalltalk.Repl)})},
|
|
|
+args: [],
|
|
|
+source: "nextResultName\x0a\x09resultCount := resultCount\x0a \x09ifNotNil: [resultCount + 1]\x0a \x09ifNil: [1].\x0a ^ 'res', resultCount asString",
|
|
|
+messageSends: ["ifNotNil:ifNil:", "+", ",", "asString"],
|
|
|
+referencedClasses: []
|
|
|
+}),
|
|
|
+smalltalk.Repl);
|
|
|
+
|
|
|
smalltalk.addMethod(
|
|
|
smalltalk.method({
|
|
|
selector: "prompt",
|