Bug-fix for Cloneable #derive without mixins.
[cslatevm.git] / src / core / console.slate
blob401c61d97564514e062194e4ab1a920e662df346
1 Console addSlotsFrom: ExternalResource.
2 Console _map delegates at: 0 put: ExternalResource traitsWindow.
3 "The Console as an ExternalResource object."
4 Console handle := 0.
6 co@Console ; seq
7 "A convenience method for the Console as a Stream resource; do NOT repeat this
8 pattern without determining that ; can have no other meaning for the resource."
9 [co writer ; seq].
11 co@(Console writer) skip: n
13   n isPositive ifTrue:
14     [n timesRepeat: (co nextPut: $\s)].
15   n isNegative ifTrue: [n timesRepeat: [co nextPut: $\b]].
16   co
19 _@Console isOpen [True].
21 _@(Console writer) elementType
22 [ASCIIString Character].
24 _@(Console writer) collectionType
25 [ASCIIString].
27 _@(Console reader) elementType
28 [ASCIIString Character].
30 _@(Console reader) collectionType
31 [ASCIIString].
33 _@(Console reader) isAtEnd [False].
34 _@(Console writer) isAtEnd [False].
36 c@Console flush [c writer flush. c reader flush].
37 _@(Console reader) flush [].
38 w@(Console writer) flush [w resource flushOutput].
40 Console interactor ::= ReadWriteStream clone.
41 "A singleton which delegates to ConsoleInput and ConsoleOutput in order to
42 provide ReadWriteStream access for the Console."
44 _@(Console interactor) elementType
45 [ASCIIString Character].
47 _@(Console interactor) collectionType
48 [ASCIIString].
50 _@(Console interactor) isAtEnd [False].
51 _@(Console interactor) next [Console reader next].
52 _@(Console interactor) next: n [Console reader next: n].
53 _@(Console interactor) nextPut: obj [Console writer nextPut: obj].
54 _@(Console interactor) nextPutAll: c [Console writer nextPutAll: c].
55 _@(Console interactor) flush [Console reader flush. Console writer flush].
56 _@(Console interactor) nextLine [Console reader nextLine].
58 conditions DebugConsole ::= Console clone.
59 "DebugConsole addDelegate: Console."
60 "The interaction to which Error messages are sent and handler input is
61 received. This should be StdErr and overridable."
62 DebugConsole handle := 1.
63 DebugConsole writeStream resource := DebugConsole.