File: shell.st

package info (click to toggle)
steptalk 0.10.0%2Bgit20200629-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,732 kB
  • sloc: objc: 12,182; yacc: 400; makefile: 40; sh: 34; csh: 4; awk: 3; lisp: 3
file content (45 lines) | stat: -rw-r--r-- 990 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"
    Script shell - shell written in script.
    
    This is just an example.
    
    Run it by: stexec shell.st
    
    Author: Stefan Urbanek
    Date:   2003 Oct 3

"

[| :done

main
    | line env engine result |
    
    Environment includeFramework:'StepTalk'.
    Environment loadModule:'ReadlineTranscript'.
    
    " Create environment "
    env := STEnvironment defaultScriptingEnvironment.
    env setObject:env forName:'Environment'.
    env setObject:Transcript forName:'Transcript'.
    env setObject:self forName:'Shell'.
    
    " Create and setup engine "
    engine := STEngine engineForLanguage:'Smalltalk'.

    " Do the loop! "
    
    [ done ] whileFalse: [ 
        line := Transcript readLine:'Shell > '.
        (line = 'exit') ifTrue: [ done := YES ].
        result := engine executeCode: (line, ' ') inEnvironment:env.
        Transcript showLine: result.
    ].
    ^self
!
    
exit
        Transcript showLine: 'BLAH'.
    done := YES.    
    ^self
]