|
@@ -913,6 +913,14 @@ prompt
|
|
|
|
|
|
!Repl methodsFor: 'actions'!
|
|
|
|
|
|
+clearScreen
|
|
|
+ | esc cls |
|
|
|
+ esc := String fromCharCode: 27.
|
|
|
+ cls := esc, '[2J', esc, '[0;0f'.
|
|
|
+ process stdout write: cls.
|
|
|
+ interface prompt
|
|
|
+!
|
|
|
+
|
|
|
close
|
|
|
process stdin destroy
|
|
|
!
|
|
@@ -936,11 +944,16 @@ eval: buffer on: anObject
|
|
|
result := Compiler new evaluateExpression: buffer on: anObject]
|
|
|
catch: [:e |
|
|
|
e isSmalltalkError
|
|
|
- ifTrue: [ErrorHandler new handleError: e]
|
|
|
- ifFalse: [process stdout write: e jsStack]]].
|
|
|
+ ifTrue: [ e resignal ]
|
|
|
+ ifFalse: [ process stdout write: e jsStack ]]].
|
|
|
^ result
|
|
|
!
|
|
|
|
|
|
+printWelcome
|
|
|
+ Transcript show: 'Welcome to Amber version ', Smalltalk current version, ' (NodeJS ', process versions node, ').'.
|
|
|
+ Transcript show: 'Type :q to exit.'; cr.
|
|
|
+!
|
|
|
+
|
|
|
setPrompt
|
|
|
interface setPrompt: self prompt
|
|
|
! !
|
|
@@ -983,18 +996,12 @@ assignNewVariable: buffer do: aBlock
|
|
|
^ self parseAssignment: buffer do: [ :name :expr || varName value |
|
|
|
varName := name ifNil: [self nextResultName].
|
|
|
session := self addVariableNamed: varName to: session.
|
|
|
- value := self eval: varName, ' := ', (expr ifNil: [buffer]) on: session.
|
|
|
+ [ value := self eval: varName, ' := ', (expr ifNil: [buffer]) on: session ]
|
|
|
+ on: Error
|
|
|
+ do: [ :e | ErrorHandler new logError: e. value := nil].
|
|
|
aBlock value: varName value: value]
|
|
|
!
|
|
|
|
|
|
-clearScreen
|
|
|
- | esc cls |
|
|
|
- esc := String fromCharCode: 27.
|
|
|
- cls := esc, '[2J', esc, '[0;0f'.
|
|
|
- process stdout write: cls.
|
|
|
- interface prompt
|
|
|
-!
|
|
|
-
|
|
|
encapsulateVariable: aString withValue: anObject in: aClass
|
|
|
"Add getter and setter for given variable to session."
|
|
|
| compiler |
|
|
@@ -1022,7 +1029,7 @@ instanceVariableNamesFor: aClass
|
|
|
!
|
|
|
|
|
|
isIdentifier: aString
|
|
|
- ^ aString match: '^[a-z_]\w+$' asRegexp
|
|
|
+ ^ aString match: '^[a-z_]\w*$' asRegexp
|
|
|
!
|
|
|
|
|
|
isVariableDefined: aString
|
|
@@ -1047,8 +1054,8 @@ parseAssignment: aString do: aBlock
|
|
|
| assignment |
|
|
|
assignment := (aString tokenize: ':=') collect: [:s | s trimBoth].
|
|
|
^ (assignment size = 2 and: [self isIdentifier: assignment first])
|
|
|
- ifTrue: [aBlock value: assignment first value: assignment last]
|
|
|
- ifFalse: [aBlock value: nil value: nil]
|
|
|
+ ifTrue: [ aBlock value: assignment first value: assignment last ]
|
|
|
+ ifFalse: [ aBlock value: nil value: nil ]
|
|
|
!
|
|
|
|
|
|
presentResultNamed: varName withValue: value
|
|
@@ -1056,11 +1063,6 @@ presentResultNamed: varName withValue: value
|
|
|
interface prompt
|
|
|
!
|
|
|
|
|
|
-printWelcome
|
|
|
- Transcript show: 'Welcome to Amber version ', Smalltalk current version, ' (NodeJS ', process versions node, ').'.
|
|
|
- Transcript show: 'Type :q to exit.'; cr.
|
|
|
-!
|
|
|
-
|
|
|
processLine: buffer
|
|
|
"Processes lines entered through the readline interface."
|
|
|
| show |
|