Fixed issue #141
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 326 B |
0
examples/presentation/fosdem2012/lib/booklet/images/shadow-top-back.png
Executable file → Normal file
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
0
examples/presentation/fosdem2012/lib/booklet/images/shadow-top-forward.png
Executable file → Normal file
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
100
repl/REPL.js
|
@ -1,25 +1,25 @@
|
|||
smalltalk.addPackage('REPL', {});
|
||||
smalltalk.addClass('Repl', smalltalk.Object, ['readline', 'interface', 'util'], 'REPL');
|
||||
smalltalk.addMethod(
|
||||
unescape('_prompt'),
|
||||
"_close",
|
||||
smalltalk.method({
|
||||
selector: unescape('prompt'),
|
||||
category: 'accessing',
|
||||
selector: "close",
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return unescape("amber%20%3E%3E%20");
|
||||
smalltalk.send(smalltalk.send((typeof process == 'undefined' ? nil : process), "_stdin", []), "_destroy", []);
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('prompt%0A%09%5E%27amber%20%3E%3E%20%27'),
|
||||
messageSends: [],
|
||||
source: "close\x0a\x09process stdin destroy",
|
||||
messageSends: ["destroy", "stdin"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_createInterface'),
|
||||
"_createInterface",
|
||||
smalltalk.method({
|
||||
selector: unescape('createInterface'),
|
||||
selector: "createInterface",
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
|
@ -30,48 +30,16 @@ smalltalk.send(self, "_setPrompt", []);
|
|||
smalltalk.send(self['@interface'], "_prompt", []);
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('createInterface%0A%09%22No%20completion%20for%20now%22%0A%09interface%20%3A%3D%20readline%20createInterface%3A%20process%20stdin%20stdout%3A%20process%20stdout.%0A%09interface%20on%3A%20%27line%27%20do%3A%20%5B%3Abuffer%20%20%7C%20self%20eval%3A%20buffer%5D.%0A%09interface%20on%3A%20%27close%27%20do%3A%20%5Bself%20close%5D.%0A%09self%20setPrompt.%0A%09interface%20prompt'),
|
||||
source: "createInterface\x0a\x09\x22No completion for now\x22\x0a\x09interface := readline createInterface: process stdin stdout: process stdout.\x0a\x09interface on: 'line' do: [:buffer | self eval: buffer].\x0a\x09interface on: 'close' do: [self close].\x0a\x09self setPrompt.\x0a\x09interface prompt",
|
||||
messageSends: ["createInterface:stdout:", "stdin", "stdout", "on:do:", "eval:", "close", "setPrompt", "prompt"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_setPrompt'),
|
||||
"_eval_",
|
||||
smalltalk.method({
|
||||
selector: unescape('setPrompt'),
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(self['@interface'], "_setPrompt_", [smalltalk.send(self, "_prompt", [])]);
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('setPrompt%0A%09interface%20setPrompt%3A%20self%20prompt'),
|
||||
messageSends: ["setPrompt:", "prompt"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_close'),
|
||||
smalltalk.method({
|
||||
selector: unescape('close'),
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send((typeof process == 'undefined' ? nil : process), "_stdin", []), "_destroy", []);
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('close%0A%09process%20stdin%20destroy'),
|
||||
messageSends: ["destroy", "stdin"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_eval_'),
|
||||
smalltalk.method({
|
||||
selector: unescape('eval%3A'),
|
||||
selector: "eval:",
|
||||
category: 'actions',
|
||||
fn: function (buffer){
|
||||
var self=this;
|
||||
|
@ -80,16 +48,16 @@ var result=nil;
|
|||
smalltalk.send(self['@interface'], "_prompt", []);
|
||||
return self;},
|
||||
args: ["buffer"],
|
||||
source: unescape('eval%3A%20buffer%0A%09%7C%20result%20%7C%0A%09buffer%20isEmpty%20ifFalse%3A%20%5B%0A%09%09self%20try%3A%20%5B%0A%09%09%09result%20%3A%3D%20Compiler%20new%20loadExpression%3A%20buffer.%0A%09%09%09Transcript%20show%3A%20result%5D%0A%09%09catch%3A%20%5B%3Ae%20%7C%0A%09%09%09e%20isSmalltalkError%0A%09%09%09%20%20%20%20ifTrue%3A%20%5BErrorHandler%20new%20handleError%3A%20e%5D%0A%09%09%09%20%20%20%20ifFalse%3A%20%5Bprocess%20stdout%20write%3A%20e%20jsStack%5D%5D%5D.%0A%09interface%20prompt'),
|
||||
source: "eval: buffer\x0a\x09| result |\x0a\x09buffer isEmpty ifFalse: [\x0a\x09\x09self try: [\x0a\x09\x09\x09result := Compiler new loadExpression: buffer.\x0a\x09\x09\x09Transcript show: result]\x0a\x09\x09catch: [:e |\x0a\x09\x09\x09e isSmalltalkError\x0a\x09\x09\x09 ifTrue: [ErrorHandler new handleError: e]\x0a\x09\x09\x09 ifFalse: [process stdout write: e jsStack]]].\x0a\x09interface prompt",
|
||||
messageSends: ["ifFalse:", "isEmpty", "try:catch:", "loadExpression:", "new", "show:", "ifTrue:ifFalse:", "isSmalltalkError", "handleError:", "write:", "stdout", "jsStack", "prompt"],
|
||||
referencedClasses: ["Compiler", "Transcript", "ErrorHandler"]
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_initialize'),
|
||||
"_initialize",
|
||||
smalltalk.method({
|
||||
selector: unescape('initialize'),
|
||||
selector: "initialize",
|
||||
category: 'initialization',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
|
@ -98,24 +66,56 @@ smalltalk.send(self, "_initialize", [], smalltalk.Object);
|
|||
(self['@util']=smalltalk.send((typeof require == 'undefined' ? nil : require), "_value_", ["util"]));
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('initialize%0A%09super%20initialize.%0A%09readline%20%3A%3D%20require%20value%3A%20%27readline%27.%0A%09util%20%3A%3D%20require%20value%3A%20%27util%27'),
|
||||
source: "initialize\x0a\x09super initialize.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'",
|
||||
messageSends: ["initialize", "value:"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_prompt",
|
||||
smalltalk.method({
|
||||
selector: "prompt",
|
||||
category: 'accessing',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
return "amber >> ";
|
||||
return self;},
|
||||
args: [],
|
||||
source: "prompt\x0a\x09^'amber >> '",
|
||||
messageSends: [],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
smalltalk.addMethod(
|
||||
"_setPrompt",
|
||||
smalltalk.method({
|
||||
selector: "setPrompt",
|
||||
category: 'actions',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(self['@interface'], "_setPrompt_", [smalltalk.send(self, "_prompt", [])]);
|
||||
return self;},
|
||||
args: [],
|
||||
source: "setPrompt\x0a\x09interface setPrompt: self prompt",
|
||||
messageSends: ["setPrompt:", "prompt"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
smalltalk.Repl);
|
||||
|
||||
|
||||
smalltalk.addMethod(
|
||||
unescape('_main'),
|
||||
"_main",
|
||||
smalltalk.method({
|
||||
selector: unescape('main'),
|
||||
selector: "main",
|
||||
category: 'not yet classified',
|
||||
fn: function (){
|
||||
var self=this;
|
||||
smalltalk.send(smalltalk.send(self, "_new", []), "_createInterface", []);
|
||||
return self;},
|
||||
args: [],
|
||||
source: unescape('main%0A%09self%20new%20createInterface'),
|
||||
source: "main\x0a\x09self new createInterface",
|
||||
messageSends: ["createInterface", "new"],
|
||||
referencedClasses: []
|
||||
}),
|
||||
|
|